第一章 博大精深xpath
目录
一、结合属性、文本定位
1. id、name、class等
//div[@name='selecteditem']
//input[contains(@id,'validCode')]
2. 使用text
//*[text()="销售单管理"]
3. 同时使用多个属性进行定位
标签后接多个[],一个[]内的值代表一个属性
//div[@class='f_dn u_fun02'][@style='display: block;' ]//p[text()='{CPMainMenuNameSec}']
二、比较文本内容
1. 等于
//*[text()="销售单管理"]
2. 包含(contains)
//div[contains(text(),"所有功能")] //input[contains(@id,'validCode')] //span[contains(text(),'开户行及账号')]/../input[@type='text'] //iframe[contains(@src,'showNewCustPage')]
三、根据可定位元素选择其他元素
1. 返回上一级(../)
//span[text()="销售单名称"]/../input
可返回多级
//div[@id='C']/../..
2. parent::元素类型(返回父元素)
“子元素的xpath/parent::父元素类型”
3. sibling(兄弟元素)
(preceding-sibling::元素类型[序号])(following-sibling::[序号])
//div[text()="J844011100095"]/../preceding-sibling::td[2]//input //div[text()='验收测试-在线充值']/../following-sibling::td[4]//div//span
4. 选择相同xpath的第i个元素
下标从1开始
(//span[text()='否'])[3]
5.ancestor(祖辈节点)
用法同parent,感觉比parent好用,后面可以加序号,若为[1]则表示上一级,不加序号默认最上级
//span[text()='套包集合']/ancestor::div[3]
四、特殊元素的定位方式
1. svg标签
需要使用name定位
//div[@class='el-loading-mask']//*[name()='svg']
第二章 其他情况
一、找不到元素
1. 检查时候在iframe里
2. 元素是否加载完毕
3. 元素是否可见
display:none
type=”hidden”
4. 元素是否被遮挡
如下图
//span[text()='稽核通过']
报错,元素不可点击
element click intercepted: Element … is not clickable at point (969, 793)
解决办法:尝试使用未被遮挡的父元素或最上层元素,或者使用js定位
//span[text()='稽核通过']/..
二、无法输入
附录
参考资料
版权声明:本文为weixin_43741194原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。