README
Purpose
This is a converter that can convert location words to XPath.
Installation
$ npm i xpath-converter --save
Usage
1. Create your own page class to extend Locator, and add your location type as parameter:
const xpathConverter = require('xpath-converter');
class CustomPage extends xpathConverter.adapter.Locator {
super() {
}
'page'({ name, type, index }) { return `header[h6="${name}"]["${index}"]`; }
'section'({ name, type, index }) { return `setion[h2="${name}"]["${index}"]`; }
'input'({ name, type, index }) { return `label[text()="${name}"]/following/::input["${index}"]`; }
execute(type) {
const locator = new MainPage();
return locator[type] && locator[type](...[].slice.call(arguments, 1));
}
}
2. Call the function createElement with your own class:
var pageClass = require('./CustomPage');
var element = new xpathConverter.adapter.Element();
var xpath = element.createElement(name, type, moreInfo, pageClass);
Words introduce
There are four parts in a part of locator words.
direction: in, behind, in-front-of, in-child-of (Do not need to add it at beginning) order: 1st, 2nd, 3rd, 16th ... (Put 'the' for default) location type: id, input, checkbox ... (This is defined in your own page class) name: "customer name", "number" ... (The text in your page)
e.g 1st input "Customer Name" in 3rd section "Customer Information" behind the page "Customer" Xpath output: //header[h6="Customer"]["1"]/following::setion[h2="Customer Information"]["3"]/descendant::label[text()="Customer Name"]/following/::input["1"]