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

// //* 
console.log(xpgen.find().toString()); 
 
// //div 
console.log(xpgen.find("div").toString()); 
// div[0] 
xpgen.element("div"); 
 
// div[5] 
xpgen.element("div", 5); 
 
// div[contains(@class, 'fish')] 
xpgen.element("div", "contains(@class, 'fish')"); 

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"); 
xpgen.element("div").attr("href").eq("http://classdojo.com")¡¡