包含 2 个或更多 "OR" 条件的 XPath 不起作用?
XPath containing 2 or more "OR" conditions not working?
有一个锚标签,其值可以由用户更改。现在,我想编写一个 Xpath 查询,在一条语句中搜索多个 link 文本名称。
<a href="#login" class="fancybox" xpath="1">Signin</a>
现在,link 文本值可以通过用户个人资料更改。例如,“登录”、“登录”、“单击此处登录”或“立即登录”
如果我写 xpath:-
//a[contains(text(),'Login') or contains(text(),'Log-in') or contains(text(),'Login now') or contains(text(),'click here to Login')]
然后就失败了。我需要使用 Selenium 单击此元素。
请帮忙。
XPath 基于序列。所以你可以使用逗号分隔的列表,即序列,来模拟逻辑或条件。
XPath
//a[text()=("Login","Log-in","Click here to login")]
重要提示:
- 仅在需要 substring 测试时使用
contains()
。参见
- 了解string-values: See
- 注意空格变体。参见 What is the purpose of normalize-space()?
- 您发布的标记有
Signin
,但您的 XPath 没有。
- 区分大小写:
click here to Login
与 Click here to Login
不同。
XPath 1.0
如果您确定没有空格变体:
//a[.='Login' or .='Log-in' or .='Click here to login' or .='Login now']
否则:
//a[ normalize-space()='Login"
or normalize-space()='Log-in'
or normalize-space()='Click here to login'
or normalize-space()='Login now']
XPath 2.0
//a[normalize-space()=('Login','Log-in','Click here to login','Login now')]
有一个锚标签,其值可以由用户更改。现在,我想编写一个 Xpath 查询,在一条语句中搜索多个 link 文本名称。
<a href="#login" class="fancybox" xpath="1">Signin</a>
现在,link 文本值可以通过用户个人资料更改。例如,“登录”、“登录”、“单击此处登录”或“立即登录”
如果我写 xpath:-
//a[contains(text(),'Login') or contains(text(),'Log-in') or contains(text(),'Login now') or contains(text(),'click here to Login')]
然后就失败了。我需要使用 Selenium 单击此元素。
请帮忙。
XPath 基于序列。所以你可以使用逗号分隔的列表,即序列,来模拟逻辑或条件。
XPath
//a[text()=("Login","Log-in","Click here to login")]
重要提示:
- 仅在需要 substring 测试时使用
contains()
。参见 - 了解string-values: See
- 注意空格变体。参见 What is the purpose of normalize-space()?
- 您发布的标记有
Signin
,但您的 XPath 没有。 - 区分大小写:
click here to Login
与Click here to Login
不同。
XPath 1.0
如果您确定没有空格变体:
//a[.='Login' or .='Log-in' or .='Click here to login' or .='Login now']
否则:
//a[ normalize-space()='Login"
or normalize-space()='Log-in'
or normalize-space()='Click here to login'
or normalize-space()='Login now']
XPath 2.0
//a[normalize-space()=('Login','Log-in','Click here to login','Login now')]