XPath定位
老师讲XPath更适合用于移动端的定位,如果是WEB端还是建议用CSS定位.
学完css定位之后发现css确实更简洁和好用.
建议学完xpath再学css,不然理解起来有点点复杂.
最近遇到的项目是VUE前端,全页面几乎没有ID和CLass,只能硬着头皮用XPaht定位.
写这篇博文是为了做XPath笔记
路径定位就不讲了,太长也太lowl.
标签加属性定位
# //是相对路径--后面跟标签名
//标签名
# /是绝对路径
/
# 路径后面要用[]
/[@属性="属性值"]
//*[@属性="属性值"]
# @是属性
# =后面是属性值
# 例如下面这个,意思是定位 相对路径 input标签 下的 placeholder属性 , 属性值为 ‘请输入用户名’ 的元素.
# //标签名/[@属性名=“属性值”]
用户输入框 = (By.XPATH, '//input[@placeholder="请输入用户名"]')
XPath延伸
-
根据文本内容定位,适用于p标签和a标签
-
//*[text()='文本内容']
-
-
根据属性中含有的属性值来定位
例如:这个列表中的文本无法用text()完全匹配到,点击后发现会自动出现前后空格,可以用包含方法定位//ul/li[contains(text(),"大唐用电单位01")]
选中匹配到的第二个元素
(//span[text()=‘匹配’])[2]
-
//*[contains(@属性名,'包含的属性值xxx')]
-
-
根据属性以xx开头的元素来定位
-
//*[starts-with(@属性名,'以xxx开头的属性值')]
-
高阶用法笔记
如何使用xpath进行页面元素的定位?有几种xpath定位方式?
xpath常用方法
常用方法:(开头的*表示从根目录开始查找,可写可不写)
可以做布尔逻辑判断,例如
/button[@value=’submit’ or @name=’tijiao’]
*//*[text()="销售出库"]
# 根据可见文本定位
*//*[@id='username']
# 根据id定位
*//*[@class='form-control']
# 根据class定位
*//*[@addtabs='1594']
# 根据元素的其他属性进行定位
*//iframe
# 根据tag标签定位
*//*[@addtabs='397'and @py='csgl']
# 使用一个元素的多个属性同时定位
//*[text()='批次管理']/../td[2]
# '..'表示返回到父级标签(多用于表格元素查找)
//*[contains(text(),'注销')]
# 模糊匹配属性值
*//*[@id='table']/tbody/tr[1]/td[2]
# '/'绝对路径,必须从父级一层一层查找
*//*[@id='table']//td[text()='OK']
# '//'相对路径,不必从父级一层一层查找
//td[starts-with(text(),'确定') ]
# starts-with是匹配某个属性以某个值开头
用xpath定位span标签的文本
//*[text()='文本内容']
# 例如,定位该页面的文章标题
//*[text()='XPath元素定位笔记']
实战案例笔记:
定位文本的父元素button
# 根据文本定位父元素
# 例如,直接点击文本会报错,要点击文本的父元素才可以点击到按钮,这时候就定位文本的父元素
//span[contains(text(),"取 消")]/..
定位邻标签
参考地址: https://www.geek-share.com/detail/2789747230.html
案例源码
//p[text()="系统版本号"]/following-sibling::input