【问题标题】:Cannot get text using text() in XPath无法在 XPath 中使用 text() 获取文本
【发布时间】:2015-10-02 12:27:06
【问题描述】:

这是部分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>

我只需要在里面获取文本(预期值: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 中找到了选定的文本,但在测试中没有找到。超时异常导致失败,因为找不到元素

失败的原因是什么?

【问题讨论】:

  • 必须是 XPath 吗?
  • 不一定是XPath,其他方式也可以

标签: selenium xpath testng service-locator


【解决方案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() 方法从该Web Element 获取文本并将其保存在字符串中

  3. 打印该字符串text

【讨论】:

  • 谢谢!尝试了您的选择,但仍然返回空字符串
  • 如果是这样@Yuliya,您可以使用以下xpath driver.findElement(By.xpath("//td[contains(text(),'20202022 02_001')]")).getText() ;或 driver.findElement(By.xpath("//td[b[contains(text(),'PONumber')]]/following-sibling::td[contains(text(),'20202022 02_001')]") );
  • 终于解决了:WebElement element = driver.findElement(By.xpath("//td[b = 'PONumber']/following-sibling::td"));字符串文本 = element.getAttribute("textContent");字符串 ponumber = StringUtils.trim(text);返回 ponumber;
【解决方案2】:

following-sibling 是你应该使用的东西:

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

【讨论】:

    【解决方案3】:

    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,我可以展示

    【讨论】:

      【解决方案4】:

      我遇到了一个类似的问题,其中一个元素是可见的,但测试不会通过 isTextPresent。当我检查源代码时,它是

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

      注意:不要投反对票,只是想提供帮助。

      【讨论】:

        猜你喜欢
        • 2015-11-21
        • 2022-01-23
        • 1970-01-01
        • 1970-01-01
        • 2023-01-15
        • 1970-01-01
        • 2019-04-11
        • 2011-07-24
        • 1970-01-01
        相关资源
        最近更新 更多