Java 等待webelement的文本是精确的给定文本
在Java、Selenium中,您可以等待文本出现在Java 等待webelement的文本是精确的给定文本,java,selenium,wait,Java,Selenium,Wait,在Java、Selenium中,您可以等待文本出现在webelement(使用WebDriverWait)中: 但是,如果您不希望expectedMessage在元素中(=expectedMessage是webelement.getText()的子字符串),而是希望webelement的确切文本(=expectedMessage是与webelement.getText()相同的字符串),您会怎么做 Selenium确实提供了以下功能: wait.until(ExpectedConditions.
webelement
(使用WebDriverWait
)中:
但是,如果您不希望expectedMessage在元素中(=expectedMessage是webelement.getText()的子字符串),而是希望webelement的确切文本(=expectedMessage是与webelement.getText()相同的字符串),您会怎么做
Selenium确实提供了以下功能:
wait.until(ExpectedConditions.textToBe(locator, expectedMessage));
但是,当您通过页面类中带有@FindBy的定位器收集webelements时,让定位器再次直接访问测试类是很尴尬的
如何解决这个问题?您可以创建自己的预期条件:
public static ExpectedCondition<Boolean> waitForTextInElementEquals(WebElement elm, String text) {
return new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver driver) {
try {
String elementText = elm.getText();
return elementText.equals(text);
} catch (StaleElementReferenceException var3) {
return null;
}
}
public String toString() {
return String.format("text ('%s') to be present in element %s", text, elm);
}
};
}
还有一个更简单的解决方案:
WebDriverWait wait = new WebDriverWait(webdriver, waitForElementTimeout).until(ExpectedConditions.attributeToBe(webelement, "text", expected));
使用selenium 3.8.1进行测试。JeffC的可能复制品:那么,它在哪里存在?它看起来像什么?
WebDriverWait wait = new WebDriverWait(WebDriver, 30, 1000);
wait.until(waitForTextInElementEquals(foo, bar));
WebDriverWait wait = new WebDriverWait(webdriver, waitForElementTimeout).until(ExpectedConditions.attributeToBe(webelement, "text", expected));