JavaScript 定位XPath

阅读更多
由于使用table ,一个界面的元素的xpath 可能会不断的变化,因而一个界面元素的xpath可能会有多个,于是使用 数组储存可能的xpath,使用如下程序结构
以后页面变化,只需要填数组就好

var orderid_xp=['html/body/table[4]/tbody/tr/td/table/tbody/tr[3]/td',
                  'html/body/table[5]/tbody/tr/td/table/tbody/tr[3]/td'];
 
var orderid=getCompText(orderid_xp);


function getCompText(xpthArr){
  var result="";
  if(typeof xpthArr=='string'){  result=getTextByXpath(xpthArr); return result;}
  if(typeof xpthArr=='object'){ 
    for(var i=0;i 
 



JavaScript 定位取得 xpath 的文本值的函数 已经 trim 函数


function getTextByXpath(xpth){
  var result="";
   
  var iterator = document.evaluate(xpth, document, null, XPathResult.UNORDERED_NODE_ITERATOR_TYPE, null );

try {
  var thisNode = iterator.iterateNext();
  
  while (thisNode) {
    if(typeof thisNode.textContent !='undefined') {result=result+thisNode.textContent ;}
    thisNode = iterator.iterateNext();
  }	
}
catch (e) {
  dump( 'Error: Document tree modified during iteration ' + e );
}
  return result;
}

/**
* 删除左右两端的空格
*/
String.prototype.trim=function()
{
     return this.replace(/(^\s*)(\s*$)/g, '');
}
/**
* 删除左边的空格
*/
String.prototype.ltrim=function()
{
     return this.replace(/(^\s*)/g,'');
}
/**
* 删除右边的空格
*/
String.prototype.rtrim=function()
{
     return this.replace(/(\s*$)/g,'');
}


function lookupElementByXPath(path) {
    var evaluator = new XPathEvaluator(); 
    var result = evaluator.evaluate(path, document.documentElement, null,XPathResult.FIRST_ORDERED_NODE_TYPE, null); 
    return result.singleNodeValue;
}


CSS 定位是弥补 xpath 不足之处的利器

css 模糊匹配类似 perl ,假设您想选择 class 属性中包含 important 的元素,可以用下面这个选择器做到这一点:

p[class~="important"] {color: red;}

你可能感兴趣的:(JavaScript 定位XPath)