mirror of
https://github.com/appium/appium.git
synced 2026-01-29 05:39:01 -06:00
89 lines
3.4 KiB
JavaScript
89 lines
3.4 KiB
JavaScript
// Run with mocha by installing dev deps: npm install --dev
|
|
// more docs on writing tests with mocha can be found here:
|
|
// http://visionmedia.github.com/mocha/
|
|
"use strict";
|
|
|
|
var _ = require('underscore')
|
|
, au = require('../../lib/xpath.js');
|
|
|
|
describe("XPath lookups", function() {
|
|
var oks = {
|
|
"//button": {path: [{node: 'button', search: 'desc', index: null}]}
|
|
, "//button[last()]": {path: [{node: 'button', search: 'desc', index: -1}]}
|
|
, "//button[1]": {path: [{node: 'button', search: 'desc', index: 1}]}
|
|
, "/button": {path: [{node: 'button', search: 'child', index: null}]}
|
|
, "/but.ton": {path: [{node: 'but.ton', search: 'child', index: null}]}
|
|
, "/button[2]": {path: [{node: 'button', search: 'child', index: 2}]}
|
|
, "button": {path: [{node: 'button', search: 'desc', index: null}]}
|
|
, "//button/text/webview": {path: [
|
|
{node: 'button', search: 'desc', index: null}
|
|
, {node: 'text', search: 'child', index: null}
|
|
, {node: 'webview', search: 'child', index: null}]}
|
|
, "//button[1]/text/webview[3]": {path: [
|
|
{node: 'button', search: 'desc', index: 1}
|
|
, {node: 'text', search: 'child', index: null}
|
|
, {node: 'webview', search: 'child', index: 3}]}
|
|
, "text/webview//button": {path: [
|
|
{node: 'text', search: 'desc', index: null}
|
|
, {node: 'webview', search: 'child', index: null}
|
|
, {node: 'button', search: 'desc', index: null}]}
|
|
, "//button[@name='hi there']": {
|
|
attr: 'name', constraint: 'hi there', substr: false}
|
|
, "//button[@other_attr='hi there']": {
|
|
attr: 'other_attr', constraint: 'hi there', substr: false}
|
|
, '//button[@name="hi there"]': {
|
|
attr: 'name', constraint: 'hi there', substr: false}
|
|
, '//list/button[@name="hi there"]': {
|
|
attr: 'name', constraint: 'hi there', substr: false}
|
|
, '//button[@name=hi there]': {
|
|
attr: 'name', constraint: 'hi there', substr: false}
|
|
, '//button[contains(@label, "hi")]': {
|
|
attr: 'label', constraint: 'hi', substr: true}
|
|
, '//button[contains(@other_attr, "hi")]': {
|
|
attr: 'other_attr', constraint: 'hi', substr: true}
|
|
, "//button[contains(@label, 'hi')]": {
|
|
attr: 'label', constraint: 'hi', substr: true}
|
|
, "//button[contains(@label, what's up dog)]": {
|
|
attr: 'label', constraint: "what's up dog", substr: true}
|
|
, "//*[contains(@text, 'agree')]": {
|
|
attr: 'text', constraint: 'agree', substr: true}
|
|
, "//*[@text='agree']": {
|
|
attr: 'text', constraint: 'agree', substr: false}
|
|
};
|
|
var notOks = [
|
|
, "//button123"
|
|
, "//button[-1]"
|
|
, "//button[last]"
|
|
, "//button[last(]"
|
|
, "//button[@name$='hi']"
|
|
, "//tag_name"
|
|
, "//button[0]"
|
|
, "//button[]"
|
|
, "//button]"
|
|
, "//button["
|
|
, "//button[something(@name, 'hi')]"
|
|
, "//button[noat='wut']"
|
|
, "//button/label[@name='hi']/moar"
|
|
, "//@attr"
|
|
];
|
|
describe("Valid XPaths", function() {
|
|
_.each(oks, function(test, xpath) {
|
|
it(xpath + " should work", function() {
|
|
var parsed = au.parseXpath(xpath);
|
|
parsed.should.not.equal(false);
|
|
_.each(test, function(val, key) {
|
|
parsed[key].should.eql(test[key]);
|
|
});
|
|
});
|
|
});
|
|
});
|
|
describe("Invalid Xpaths", function() {
|
|
_.each(notOks, function(xpath) {
|
|
it(xpath + " should not work", function() {
|
|
var parsed = au.parseXpath(xpath);
|
|
parsed.should.equal(false);
|
|
});
|
|
});
|
|
});
|
|
});
|