无法在XPath中使用text()获取文本

时间:2015-10-02 12:27:07

标签: selenium xpath testng service-locator

以下是html代码的一部分:



<td class="audit-context-break-word text-left" nowrap="nowrap">
<b class="ng-binding">PONumber</b></td>
<td class="audit-context-break-word text-left ng-binding">20202022  02_001  </td>
&#13;
&#13;
&#13;

我需要只获取文本内容(预期值:20202022 02_001)我尝试了以下变体:

By.xpath("/descendant::*[.='PONumber']/../descendant::*[@class=\"audit-context-break-word text-left ng-binding\"]/text()")
By.xpath("/descendant::*[.='PONumber']/../following::text()[1]")

问题是在FirePath中找到了所选文本,但未在测试中找到。它由于超时异常而失败,因为找不到元素

失败的原因是什么?

4 个答案:

答案 0 :(得分:1)

你应该使用

following-sibling

driver.findElement(By.xpath("//td[b = 'PONumber']/following-sibling::td")).getText();

答案 1 :(得分:1)

您可以使用following-sibling来编写Xpath。

WebElement element=driver.findElement(By.xpath("//td[b[contains(text(),'PONumber')]]/following-sibling::td"));
        String text = element.getText();
        System.out.println(text);
  1. 我在网页上识别合适的网页元素并将其保存在网页元素中。

  2. 使用getText()方法从该网络元素获取文本并将其保存在字符串中

  3. 打印字符串text

答案 2 :(得分:0)

Selenium无法评估xpath的text()函数。你可以运行javascript并获得结果。在你的程序中按照javascript运行:

document.evaluate("//span[@class='tableNode']/text()[preceding-sibling::br and following-sibling::br]", document, null, XPathResult.STRING_TYPE, null).stringValue;

如果您使用Python或Java,我可以提供

答案 3 :(得分:-1)

我有一个类似的问题,其中元素可见,但测试不会传递isTextPresent。当我检查源代码时,它是

  • 2-1180 \&amp; \ nbsp CITY 2
  • ,而测试正在寻找&#34; 2-1180 CITY 2&#34;。检查您是否也有类似的问题。让我们知道什么对你有用,有兴趣知道。

    注意:不要贬低,只是试图帮助。