Java Selenium-无法在标签内找到文本

Java Selenium-无法在标签内找到文本,java,selenium,label,Java,Selenium,Label,我想提取屏幕上显示的值(“70”),以便将其与值进行比较 已经使用不同的值尝试了getText(),getAttribute,这些值包括title、value、innerHTML和innerText。不幸的是,它们都没有起作用 你知道我们该怎么做吗 <label id="current_heat_setpoint" class="e_field_data_text">70</label> 70 注意: 我能够找到元素,并且已经确保它是正确的-getAttribute

我想提取屏幕上显示的值(“70”),以便将其与值进行比较

已经使用不同的值尝试了
getText()
getAttribute
,这些值包括title、value、innerHTML和innerText。不幸的是,它们都没有起作用

你知道我们该怎么做吗

 <label id="current_heat_setpoint" class="e_field_data_text">70</label>
70
注意:


我能够找到元素,并且已经确保它是正确的-
getAttribute(“id”)
返回“当前热量设置点”

如注释中所述,这看起来确实像一个计时问题-标签的文本是动态设置的,您需要等待它出现后才能获取它。这可以通过
WebDriverWait
和自定义预期条件实现:

WebDriverWait wait=newwebdriverwait(驱动程序,10);
WebElement label=wait.until(新的ExpectedCondition(){
公共布尔应用(WebDriver驱动程序){
返回driver.findElement(By.id(“当前热量设置点”).getText().length()>0;
}
});
System.out.println(label.getText());

页面上是否有多个元素具有相同的
当前\u热\u设置点
id?@alecxe只有一个元素具有该id,使用FirePath进行验证。好的,谢谢。那听起来更像是时间问题。这很好,但你需要考虑到这一点。理论是-热设定值是在页面加载后动态设置的,当您读取该值时,它尚未设置。如果你认为这可能是真的,我可以为你提供一个可能的解决方法。@alecxe是的,这是一个时间问题。它甚至在我认为的时间点上都没有加载。是的,听起来很像是时间问题。在下面的答案中列出了解决问题的可能方法。看一看。
WebDriverWait wait = new WebDriverWait(driver, 10);
WebElement label = wait.until(new ExpectedCondition<Boolean>() {
    public Boolean apply(WebDriver driver) {
        return driver.findElement(By.id("current_heat_setpoint")).getText().length() > 0;
    }
});
System.out.println(label.getText());