selenium xpath定位方法

本文是用JAVA语言记录WebDriver3.0使用xpath方法定位元素。Xpath语言中提供了7种节点:文档节点(根节点)、元素、属性、文本、命名空间、处理指令及注释。

本文档参考《selenium WebDriver 3.0 自动化测试框架实战指南》

1 <!DOCTYPE html>
2 <html>
3 <head>
4 <title>浩云集中存储系统</title>
5 </head>
6 <body style="text-align:center">
7 <div style="position:fixed;left:50%;top:50%;margin-left:-200px;margin-top:-150px;width:430px;height:280px;
8 background-image:url(./images/login.bmp);">
9 <form style="position:fixed;margin-left:83px;margin-top:90px;" action="phpScript/login.php" method="post">
10 	<p style="position:fixed;">
11		<text>用户名:</text>
12		<input style="width:150px;" name="usrName" value="admin"/>
13	</p>
14	<p style="position:fixed;margin-top:50px;margin-left:16px">
15		<span stype="">密码:</span>
16		<input style="width:150px;" type="password" name="usrPwd" />
17	</p>
18	<p style="position:fixed;margin-left:70px;margin-top:80px;">
19		<input type="button" value="取消" onclick=""/>
20		<input type="submit" value="登录"/> 
21	</p>
22 </form>
23  </div>
24 </body>
25 </html>

WebElement driver = new ChromeDriver();

driver.get("URL");


1、绝对路径定位元素。可使用firefox firebug组件复制其路径。(定位12行)
driver.findElement(By.xpath("/html/body/div/form/p[1]/input"));

或driver.findElement(By.xpath("/html/body/div/form/p[1]/input[@name='usrName']"));


2、使用相对路径定位元素(定位12行)

driver.findElement(By.xpath("//input[@name='usrName']"));

或driver.findElement(By.xpath("//form/p/input"));

或driver.findElement(By.xpath("//input[@value='admin']"));


3、使用索引号定位元素(定位16行)

driver.findElement(By.xpath("//form/p[2]/input"));

p[2]:2是索引。索引是根据页面元素中相同标签名之间出现的索引位置来进行定位的。


4、使用页面元素的属性值定位元素。

使用相对路径与元素属性结合方法定位。属性值不会自动改变。

driver.findElement(By.xpath("//input[@name='usrName']")); //name属性与相对路径结合

driver.findElement(By.xpath("//input[@type='submit']"));//

driver.findElement(By.xpath("//img[@href='www.sogou.com']"));

driver.findElement(By.xpath("//div[@id='username']));


5、使用模糊属性值定位元素。

xpath函数定位表达式实例表达式解释
starts-with(str1,str2)//img[starts-with(@alt,'name')]查找属性alt的属性值以“name”关键学开始的页面元素。
contains(str1,str2)//img[contains(@alt,'img')]查找属性alt的属性包含“img”关键字的页面元素,只要包含即可,无需考虑位置。

driver.findElement(By.xpath("//input[starts-with(@placeholder,'用户')]"));

driver.findElement(By.xpath("//input[starts-with(@name,'pass')]"));

driver.findElement(By.xpath("//input[contains(@placeholder,'户')]")).sendKeys(username);

driver.findElement(By.xpath("//input[contains(@name,'ssw')]")).sendKeys(userpassword);


6、使用XPath轴(Axes)定位元素。

XPath轴关键字轴的含义说明定位表达 式实例表达式解释
parent选择当前节点的上层父节点//img[@alt='div2-img2']/parent::div查找到alt的属性值为div2-img2的img元素,并基于该img元素的位置找到它上一级的div页面元素。
child选择当前节点的下层所有子节点//div[@id='div1']/child::img查找到ID属性值为div1的div元素,并基于该div元素的位置找到它下层节点中的img页面元素。
ancestor选择当前节点的所有上层的节点//img[@alt='div2-img2']/ancestor::div查找到alt属性值为div2-img2的img元素,并基于该img元素的位置找到它上级的div页面元素。
descendant选择当前节点的所有下层节点(子、孙节点)//div[@name='div2]/descendant::img查找name属性值为div2的div元素,并基于该div元素的位置找到它下级的所有节点中的Img页面元素。
following选择在当前节点之后显示的所有节点//div[@id='div1']/following::img查找ID属性值为div1的div元素,并基于该div元素的位置找到它后面节点中的img页面元素。
following-sibling选择当前节点后续所有兄弟节点//a[@href='http://www.sougou.com']/following-sibling::input查找链接地址为http://www.sougou.com的链接页面元素a并基于链接的位置找到它后续兄弟节点中的input页面元素。
preceding选择当前节点前面的所有节点//img[@alt='div2-img2']/preceding::div查找到属性alt的属性值为div2-img2的图片页面元素img,并基于该元素位置找到它前面节点中的div页面元素。
preceding-sibling选择当前节点前面的所有兄弟节点//input[@value='查询']/preceding-sibling::a[1]查找到value属性值为“查询”的input元素,并基于该元素的位置找到它前面同级节点中的第一个a[1]链接页面元素。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值