xpgen

XPath generation library

XPath generation library

To be used with selenium tests

var xpgen = require("xpgen")();
 
// //*[@id='container'] 
var path;
 
path = xpgen.find().eq("@id","container").toString(); 
 
// //div[@id='container']//*[contains(@class, 'row')] 
path = xpgen.find("div").eq("@id","container").find().contains("@class", "row").toString();
 
// //*[contains(text(), "hello")]  
path = xpath.find().contains("text()","hello").toString(); 
 
// //a[href='http://classdojo.com']/img[0] 
path = xpath.find("a").eq("href", "http://classdojo.com").element("img").toString(); 

Starts a chain with the given node name

Returns a registered chain

// //* 
console.log(xpgen.find().toString()); 
 
// //div 
console.log(xpgen.find("div").toString()); 

Sets the index for the element to search.

// div[5] 
xpgen.element("div", 5); 
 
// div[5]  
xpgen.element("div").index(5); 
// div[contains(text(), "tacos")] 
xpgen.element("div").contains('text()', "tacos") 
// div[@data-age='50'] 
xpgen.element("div").eq("@data-age", 50); 

not equal search:

// div[@data-age!='50'] 
xpgen.element("div").eq("@data-age", 50); 
// div[@data-age>'50'] 
xpgen.element("div").gt("@data-age", 50); 
// div[@data-age<'50'] 
xpgen.element("div").gt("@data-age", 50); 
// div[@data-age>='50'] 
xpgen.element("div").gt("@data-age", 50); 
// div[@data-age<='50'] 
xpgen.element("div").gt("@data-age", 50); 
// div[@data-age='50' or @data-age='60'] 
xpgen.element("div").eq("@data-age", 50).or().eq("@data-age", "60"); 
// a[contains(@class, 'account') and href='http://site.com/account'] 
xpgen.element("a").contains("class", "account").and().eq("href", "http://site.com/account"); 

registers the chain so it can be re-used

 
// //div[contains(@class, 'container')] 
xpgen.find("div").contains("@class", "container").register("#container")
 
// //div[contains(@class, 'container')]//*[contains(@data-name, 'craig')] 
xpgen.chain("#container").find().contains("@data-name", "craig")
xpgen.element("div").attr("href").eq("http://classdojo.com")