Xpath中的绝对路径与相对路径
注意:如果元素的ID不唯一或者是动态的或者name以及linktext属性值也不唯一我们就需要考虑用xpath来查找元素了,然后再对元素执行操作语法:
xpath=//tag[@attibute='value']
绝对路径:
(web自动化的时候是不支持用绝对路径写的)
Xpath的绝对路径使用单斜线"/"定位慕课网购物车这个元素
/html/body/div[1]/div/div[2]/ul/li[2]/a/span[2]
相对路径:
Xpath的相对路径用双斜线"//"定位慕课网购物车这个元素
//li[@id="shop-cart"]/a/span[2]
"/“和”//"的区别
- “/”:元素是上一节点的子节点中的一个,不能跳级
- “//”:下级任何子节点或者任何嵌套子节点中的一个,可以跳级路径里面不要用“*”,要写明标签名
Xpath如何找父节点与相关平级节点
寻找父节点
语法:xpath-to-some-element//parent::<tag>
寻找前面的平级节点
语法:xpath-to-some-element//preceding-sibling::<tag>
寻找后面的平级节点
语法:xpath-to-some-element//following-sibling::<tag>
练习:
https://www.migang.com/help/help_content_recharge
-
查找这个页面上的中国银行,对应的限额是多少?
-
从中国建设银行定位到中国银行对应的金额:
//div[@id='zc_k']//td[text()='中国建设银行']//parent::tr//preceding-sibling::tr[2]/td[2]
如何构建一个有效的Xpath
1. 用元素的text文本属性来写Xpath
示例:定位慕课网'忘记密码'链接
xpath=//a[text()='忘记密码']
2. 用Contains关键字构建有效的Xpath
语法:
//tag[contains(attribute,'value')]
示例:
//a[contains(text(),'忘记密码')]
//input[contains(@class,'ipt')and contains(@placeholder,'手机号')]
备注:有时候可能需要用到多个contains来定位某个元素
3.用starts-with关键字查找元素
语法:
//tag[starts-with(attribute,'value')]
示例:
//input[starts-with(@class,'xa-emailOrPhone')]
//input[starts-with(@placeholder,'请输入登录')]