selenium 常用xpath写法
以下使用豆包生成,只做记录
在 Selenium 中,XPath 是一种非常强大且常用的元素定位方式,以下是一些常用的 XPath 写法及示例:
基本定位
- 根据标签名定位查找页面中所有的
<input>
标签。
xpath
//input
这里 //
表示在整个文档中查找,不考虑元素的层级关系,input
是标签名。
- 根据属性定位查找
id
属性为username
的元素。
xpath
//*[@id='username']
*
表示匹配任意标签,@id='username'
表示筛选出 id
属性值为 username
的元素。
文本定位
- 精确匹配文本查找文本内容为 “登录” 的
<a>
标签。
xpath
//a[text()='登录']
text()
函数用于获取元素的文本内容,该表达式表示筛选出文本内容恰好为 “登录” 的 <a>
标签。
- 模糊匹配文本查找文本内容包含 “搜索” 的
<div>
标签。
xpath
//div[contains(text(), '搜索')]
contains()
函数用于判断元素文本是否包含指定内容,这在文本内容不完全确定,只知道部分关键字时非常有用。
层级定位
- 父子层级定位假设页面结构为
<div class="parent"><span class="child">目标元素</span></div>
,要定位到<span>
元素。
xpath
//div[@class='parent']/span[@class='child']
这里 /
表示直接子元素关系,先找到 class
为 parent
的 <div>
元素,再从它的直接子元素中找到 class
为 child
的 <span>
元素。
- 祖先 - 后代层级定位假设页面结构为
<div class="ancestor"><p><span class="target">目标元素</span></p></div>
,要定位到<span>
元素。
xpath
//div[@class='ancestor']//span[@class='target']
这里 //
表示后代元素关系,即先找到 class
为 ancestor
的 <div>
元素,然后在它的所有后代元素中找到 class
为 target
的 <span>
元素。
逻辑运算定位
- 与运算查找
id
为password
且type
为password
的<input>
元素。
xpath
//input[@id='password' and @type='password']
and
用于连接多个条件,只有同时满足所有条件的元素才会被匹配到。
- 或运算查找
class
为btn-login
或者class
为btn-signup
的元素。
xpath
//*[@class='btn-login' or @class='btn-signup']
or
表示只要满足其中一个条件的元素就会被匹配到。
轴定位
- 兄弟节点定位假设页面结构为
<div><p id="target">目标元素</p><span>后续兄弟元素</span></div>
,要定位到p
元素后面的第一个兄弟元素<span>
。
xpath
//p[@id='target']/following-sibling::span[1]
following-sibling
轴表示选取当前节点之后的所有兄弟节点,[1]
表示选取第一个。
这些常用的 XPath 写法基本能满足 Selenium 中大部分的元素定位需求,在实际使用时,可以根据具体的页面结构和定位要求灵活选择和组合使用 。