由于使用table ,一个界面的元素的xpath 可能会不断的变化,因而一个界面元素的xpath可能会有多个,于是使用 数组储存可能的xpath,使用如下程序结构
以后页面变化,只需要填数组就好
JavaScript 定位取得 xpath 的文本值的函数 已经 trim 函数
CSS 定位是弥补 xpath 不足之处的利器
css 模糊匹配类似 perl ,假设您想选择 class 属性中包含 important 的元素,可以用下面这个选择器做到这一点:
p[class~="important"] {color: red;}
以后页面变化,只需要填数组就好
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;}