Html XPath包含2个或多个;或;条件不起作用?
有一个锚标记,其值可由用户更改。现在,我想编写一个Xpath查询,在一条语句中搜索多个链接文本名称Html XPath包含2个或多个;或;条件不起作用?,html,xml,xpath,anchor,web-testing,Html,Xml,Xpath,Anchor,Web Testing,有一个锚标记,其值可由用户更改。现在,我想编写一个Xpath查询,在一条语句中搜索多个链接文本名称 <a href="#login" class="fancybox" xpath="1">Signin</a> 然后它失败了。我需要使用Selenium单击此元素 请提供帮助。XPath基于序列。因此,您可以使用逗号分隔的列表,即序列,来模拟逻辑OR条件 XPath //a[text()=("Login&
<a href="#login" class="fancybox" xpath="1">Signin</a>
然后它失败了。我需要使用Selenium单击此元素
请提供帮助。XPath基于序列。因此,您可以使用逗号分隔的列表,即序列,来模拟逻辑OR条件 XPath
//a[text()=("Login","Log-in","Click here to login")]
重要注意事项:
- 仅在需要子字符串测试时使用
。看contains()
- 理解:见
- 注意空格的变化。看
- 您发布的标记具有
,但您的XPath没有Signin
- 注意区分大小写:
与单击此处登录
不同单击此处登录
//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']
XPath2.0
你能这样试一下吗:用。Xpath(//a[@class='fancybox']),然后单击此元素。您的代码看起来很好。我不知道问题出在哪里,但是您的XPath表达式看起来非常好。我不会这样写(例如,如果文本包含'Login now',那么它也包含'Login',因此其中一个条件是多余的);但这并不能解释它失败的原因。OP使用的是Selenium,所以他坚持使用过时的XPath1.0语法。此构造需要XPath2.0或更高版本。您好,kjhughes,谢谢您的详细回答。我不知道我们可以在XPath或XPath条件中使用逗号分隔的值。那么,XPath表达式中可以使用的“或”、“和”的数量是否有限制。我可以为“或”写10-15个或更多的条件吗?注意
x=('a','b','c')
构造需要XPath 2.0或更高版本。关于或
或和
的最大操作数,理论上没有限制。任何给定的实现都可能有一个限制,但10-15应该可以。
//a[ normalize-space()='Login"
or normalize-space()='Log-in'
or normalize-space()='Click here to login'
or normalize-space()='Login now']
//a[normalize-space()=('Login','Log-in','Click here to login','Login now')]