【问题标题】:How to retrieve the label text as per the html provided?如何根据提供的 html 检索标签文本?
【发布时间】:2018-08-21 21:10:57
【问题描述】:

有时我无法获取网络元素的内部文本;最近在做个人保险,没有得到标签(网页元素)的内部文本。以下是检查网页的脚本和截图:

WebElement detailPostCode =driver.findElement(By.xpath("//label[@for='q_codePostalDetailAU']"));
System.out.println("postcode label text "+detailPostCode.getText());

请帮助我理解这个问题。感谢您的关心。

【问题讨论】:

  • 欢迎来到 Stack Overflow!确保为您使用的语言在问题中添加标签。还将您问题中的代码格式化为代码。如果您在格式化方面需要帮助,请参阅帮助主题。
  • 您能否添加(完整/相关)错误消息或描述当它不起作用时会发生什么?看起来您的定位器很好......我想知道这是否不是您需要添加等待的时间问题。你试过等待吗?如果有,结果如何?

标签: selenium selenium-webdriver xpath css-selectors webdriver


【解决方案1】:

根据 HTML,您已将 <label> 与文本共享为 邮政编码 是 <div> 标记的 子节点 class 属性为 q_codePostal。

出了什么问题?

根据您使用的代码试用版:

WebElement detailPostCode = driver.findElement(By.xpath("//label[@for='q_codePostalDetailAU']"));

在此表达式中,//label[@for='q_codePostalDetailAU'] 将始终将带有id 属性的降序<input> 标记称为q_codePostalDetailAU。因此,您的代码试用不起作用。

解决方案

作为替代方案,您可以使用以下解决方案:

WebElement detailPostCode = driver.findElement(By.cssSelector("div.q_codePostal>label"));

【讨论】:

    【解决方案2】:

    你能试试这个 xpath:

    driver.findElement(By.xpath("//div[@class='q_codePostal']/label"));
    

    【讨论】:

    • 它现在正在使用您建议的 xpath...但是,我不明白这有什么不同。你能解释一下原因吗?
    • "for" 并不是您可以在 xpath 中使用的真正属性,如果它是 class, id, css, text ,那么您可以这样做。我总是更喜欢使用父 div(如果可用)并从它们导航到子标签,这样更容易并且很难错过它,99% 的时间总是有效的。如果你喜欢我的回答,你也可以投票。希望我的回答有所帮助。干杯!
    猜你喜欢
    • 1970-01-01
    • 2019-02-11
    • 2023-03-23
    • 1970-01-01
    • 2012-03-02
    • 1970-01-01
    • 1970-01-01
    • 2021-11-28
    • 1970-01-01
    相关资源
    最近更新 更多