XPath

1.IE浏览器实现的xpath

var xmlDom = getXMLDOM("<root><user>Lee</user></root>");

var node = xmlDom.selectSingleNode("root/user");  //查找到多个,返回第一个


2. XPath常用语法

var node = xmlDom.selectSingleNode("root/user[2]");   //选择第二个

var node = xmlDom.selectSingleNode("root/user/text()");   //获取文本

var node = xmlDom.selectSingleNode("//user");   //不关心层次

var node = xmlDom.selectSingleNode("root//user");   //root下不关系层次

var node = xmlDom.selectSingleNode("root/user@id=5"); //属性匹配

 

var node = xmlDom.selectSingleNodes("root/user@id=5"); //返回多个node


3. W3C XPath常用语法

var eva = new XPathEvaluator();

var result = eva.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null);  //w3c下标从1开始

if (resullt != null) {

alert(result.singleNodeValue);  //选择匹配的第一个节点

}


var result = xmlDom.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); 

if (resullt != null) {

alert(result.singleNodeValue);  //第二种方式

}

var result = xmlDom.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ITERATOR_NODE_TYPE, null); 

if (resullt != null) {

var node = result.iterateNext;

while(node != null) {

alert(node);   //多返回节点访问

}

}


4. 跨浏览器兼容XPath

function selectSingleNode(xmlDom, xpath) {

var node = null;

if (typeof xmlDom.evaluate != "undefined") {

var pattern = /\[\d+\]/

result  = pattern.match(xpath);

if (result != null) {

num = parseInt(RegExp.$1) +1;

xpath = xpath.repalce(pattern, [" + num+"]");

}

var result = xmlDom.evaluate("root/user[1]", xmlDom, null, XPathResult.FIRST_ORDERED_NODE_TYPE, null); 

if (resullt != null) {

node = result.singleNodeValue;

}

} else if (typeof xmlDom.selectSingleNode != "undefined") {

node = xmlDom.selectSingleNode(xpath);

}

return node;

}







注:作者原有说明: 背景是曾经友情支持了测试组一小段时间,发现他们使用selenium做页面的自动化测试,需要用到XPath,但IE下没有获取XPath的工具,只能在Firefox和chrome下获取,步骤还比较麻烦。而且有些页面在chrome和ie生成的代码的不一样的,所以chrome下获取的xpath,到ie下就无法工作,只能自己在ie下查看页面元素自己写xpath,痛苦而且效率低下。 于是“大发慈悲”,自己花了一天左右(开发加调试)写了这款小工具,弥补了IE下没有获取XPath工具的空缺。一开始用Delphi做的,但无法支持64位,于是又用C#写了一次,可以支持32/64位了。这次开源的就是C#的。 工具发出了,自动化测试人员一下子就用起来了,大家都反馈好用简单方便,软件又小巧只有80k,不像有些工具启动都要半分钟。短时间下载量就有150+,使用人数我估计得有200人吧。(我都怀疑公司有没有200个自动化测试人员)。 想不到我一个开发人员,居然在测试人员里面昙花一现闪亮了一把,造化弄人啊。这个软件还说明了一个事情,对用户切实有用的东西是不太需要宣传的。。。 使用很简单,直接拖动左下角鼠标到IE查看即可。还可以查看IE密码框里面的密码。公司里面有自动化测试的人员建议转给他们(尤其是测试的MM _),他们会多谢你的。代码已经开源,对代码有兴趣的可以去Github上看看。都是些windows代码,技术含量不高,windows的东西就是调试比较耗时。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值