【问题标题】:One Xpath expression doesn't work in selenium, but works in Firefox一个 Xpath 表达式在 selenium 中不起作用,但在 Firefox 中起作用
【发布时间】:2013-09-11 04:01:05
【问题描述】:

我有一个关于 xpath 的问题。 chrome里面有这样的td:

<td class="dataCol col02">
"Hello world(notes:there is$)nbsp;"
<a href="xxxx">[View Hierarchy]</a>
</td>

但是当我在 Firefox 中检查相同的元素时,它没有 $nbsp 和双引号;

<td class="dataCol col02">
Hello world
<a href="xxxx">[View Hierarchy]</a>
</td>

我使用 FireFinder 并使用 xpath:

//td[text()='Hello world']

,它可以找到那个元素。

但是当我使用 selenium api 2.24 时,它找不到那个元素。

by.xpath("//td[text()='Hello world']")

你对此有任何想法吗? 谢谢!

【问题讨论】:

  • 你的意思是有空格还是&amp;nbsp;实体?
  • 顺便说一句,检查源代码 (Ctrl+U) 而不是检查器的 DOM 显示,例如 Chrome devToolsFirebug,因为它们已编辑 i> 源版本
  • 如果元素在iframe中,则必须在选择其中的元素之前使用driver.switchTo().frame()

标签: html css xpath webdriver selenium-webdriver


【解决方案1】:

我会尝试使用contains() 函数。 您的 xpath 将如下所示://td[contains(text(),'Hello world')]

【讨论】:

    【解决方案2】:

    尝试使用 normalize-space() 修剪前导和尾随空白字符:

    //td[normalize-space(text())='Hello world']
    

    按照不同的 cmets 进行编辑:

    这是一个可能更适合一般情况的 XPath 表达式:

    //td[starts-with(normalize-space(.), 'Hello world')]
    

    意味着如果整个&lt;td&gt;的串联字符串内容(少了前导和尾随空格)以“Hello world”开头,则它匹配&lt;td&gt;节点

    【讨论】:

    • 也添加这个 - //td[normalize-space(.)='Hello world'] .. :)
    • 我不这么认为@Babai,//td[normalize-space(.)='Hello world'] 还会在测试中包含“[View Hierarchy]”字符串,所以它不会匹配。 //td[starts-with(normalize-space(.), 'Hello world')] 虽然有效
    • 我只是想告诉你,text() 不需要。只有. 可以工作。我在这里要求的解决方案是您答案的更紧凑版本。而已。 //td[normalize-space(text())='Hello world'] 可以写成//td[normalize-space(.)='Hello world']。而已。 :) :D
    • 我同意 text() 对于您在 SO 上找到的许多用例通常不需要。但是.text()在这种情况下是不等价的:.是当前节点,在这种情况下&lt;td class="dataCol col02"&gt; Hello world &lt;a href="xxxx"&gt;[View Hierarchy]&lt;/a&gt; &lt;/td&gt;&lt;td&gt; 有 2 个节点,1 个包含“Hello world”的文本节点和 1 个 &lt;a&gt; 节点。 text() 仅选择文本节点。您可以在freeformatter.com/xpath-tester.html 中测试不同的表达式
    • 哦!我明白了.. :) 现在得到它.. :)
    猜你喜欢
    • 1970-01-01
    • 2012-09-08
    • 2022-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-18
    • 2015-07-29
    • 1970-01-01
    相关资源
    最近更新 更多