【发布时间】:2018-08-07 16:23:01
【问题描述】:
我想为以下 div 编写 xpath:
<div class='someclass' id='someid'>:TEST SELENIUM 1234<div>
请注意:
- tag 可以是任何东西,例如 div、span 或锚标记。
-
&nbsp;可以出现在文本中的任何位置。
到目前为止我已经尝试过:
//div[contains(text(),":TEST SELENIUM 1234")]
//div[contains(text(),":TEST{ }SELENIUM{ }1234")]
//div[contains(text(),":TEST SELENIUM 1234")]
//div[normalize-space(text()) = ':TEST SELENIUM 1234']
//div[normalize-space(text()) = ':TEST{ }SELENIUM{ }1234']
//div[normalize-space(text()) = ':TEST SELENIUM 1234']
//div[normalize-space(.) = ':TEST SELENIUM 1234']
//div[normalize-space(.) = ':TEST{ }SELENIUM{ }1234']
//div[normalize-space(.) = ':TEST SELENIUM 1234']
//div[normalize-space(.) = ':TEST{\u00a0}SELENIUM{\u00a0}1234']
//div[normalize-space(.) = ':TEST${nbsp}SELENIUM${nbsp}1234']
什么对我有用(感谢@Andersson)
//div[starts-with(text(), ":TEST") and substring(text(), 7)="SELENIUM" and substring(text(), 16)="1234"]
这更像是一种变通方法,仅适用于已知字符串。
这些是我已经关注的 SO 帖子:
任何帮助将不胜感激。
【问题讨论】:
-
你如何测试这个?是
xPath 2.0,对吧?在 Chrome 和 Firefox 中它不起作用 -
你为什么不用
//div[starts-with(text(), ":TEST") and contains(text(), "SELENIUM")]?这将返回所有包含两个文本的 div,而不考虑它们之间的空格。并且您可以根据需要添加更多and条件。 -
如果你想让它通用而不是开发,使用这个代码:
//*[starts-with(text(), ":TEST") and contains(text(), "SELENIUM")] -
@AndreiSuvorkov 是的!我只是给了一个建议,以防万一,如果我们需要使用多个
contains,我们可以这样做。 -
但是您知道您在 excel 中传递的文本将用于创建元素。在运行时使用相同的文本创建 xpath。