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<xpthArr.length;i++){
var tmp=getTextByXpath(xpthArr[i]);
if(tmp.trim()==''){ continue;}
else{
result=tmp;
return result;
}
}
}
}



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;}
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值