被测试网页的HTML代码:
<html lang="en"> <body> <div id="div1" style="text-align:center"> <img alt="div1-img1" src="http://www.sougou.com/images/logo/new/sogou.png" href="http://www.sogou.com">搜狗图片</img><br/> <input name="div1input"> <a href="http://www.sogou.com">搜狗搜索</a> <input type="button" value="查询"> </div> <br> <div name="div2" style="text-align:ceneter"> <img alt="div2-img2" src="http://www.baidu.com/images/logo/new/baidu.png" href="http://www.sogou.com">百度图片</img><br/>> <input name="div2input"> <a href="http://www.sogou.com">搜狗搜索</a> </div> </body> </html>
1、使用绝对路径来定位元素:即从根节点一层层地搜索到需要被定位的页面元素,绝对路径起始于正斜杠,每一步均被斜杠分隔;
在被测试网页中查找第一个div标签下的查询按钮:/html/body/div[@value="查询"]
备注:使用绝对路径定位页面元素的好处在于可以验证页面是否发生变化;
2、使用相对路径定位元素:相对路径的每一步都根据当前节点集中的节点来计算,起始于双正斜杠;
在被测网页中查找第一个div标签下的查询按钮://input[@value="查询"]
3、使用索引号定位元素:索引号表示某个被定位的页面元素在其父节点下的同名元素中的位置序号,需要从1开始;
在被测网页中,查找第一个div标签下的“查询”按钮://input[2]
定位第二个div下的超链接://div[last()]/a
定位一个div下的超链接://div[last()-1]/a
4、使用页面元素的属性值来定位:即页面元素没有设计ID、Name等属性,同时又不想使用绝对路径或索引号来定位页面元素但是发现要被定位元素拥有某些固定不变的属性及属性值;
定位被测试网页中的第一张img元素://img[@alt="div1-img1"]
5、使用模糊属性值定位元素:即使用Xpath特定函数:starts-with(str1,str2)和contains((str1,str2));
查找属性alt的属性值以“div1”关键字开始的页面元素://img[starts-with(@alt, 'div1')]
查找alt属性的属性值包含“img”关键字的页面元素,只要包含,不考虑位置://img[contains(@alt,'img')]