html - 包含 2 个或更多“OR”条件的 XPath 不起作用?
问题描述
有一个锚标签,其值可以由用户更改。现在,我想编写一个 Xpath 查询,在一个语句本身中搜索多个链接文本名称。
<a href="#login" class="fancybox" xpath="1">Signin</a>
现在,可以通过用户配置文件更改链接文本值。例如,“登录”、“登录”、“单击此处登录”或“立即登录”
如果我写 xpath:-
//a[contains(text(),'Login') or contains(text(),'Log-in') or contains(text(),'Login now') or contains(text(),'click here to Login')]
然后它失败了。我需要使用 Selenium 单击此元素。
请帮忙。
解决方案
重要笔记:
- 仅
contains()
在需要子字符串测试时使用。请参阅contains() 在 XPath 中的作用? - 了解字符串值:请参阅在 XPath 中测试 text() 节点与字符串值
- 当心空格变化。请参阅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')]
推荐阅读
- google-sheets - 如何在具有 OR 条件的 Goole 工作表中使用 COUNTUNIQUEIFS,其中单元格可以满足两个条件
- security - 远程证明 TPM 协议
- mysql - 使用mysql连接从table_a.canon_id中查找每个关联ID的标志比率?
- c++ - 如何将字符附加到字符串的末尾[请尽量保持简单] - [Arduino]
- javascript - 检查对象属性的值和检查属性是否在对象中的区别
- cmake - find_library 如何处理版本号?
- javascript - Event.target.value 返回空字符串或空白
- ruby-on-rails - 在测试环境中禁用伪造保护时,测试如何抛出 InvalidAuthenticityToken?
- angular - Angular 中的 @Input 和 @HostBinding 装饰器有什么区别?
- python - Django:唯一约束失败:user.username