在webdriver中,如何讓webdriver等待文本字段中出現文本。在文本字段中等待直到文本
實際上,我有一個kendo文本字段的值來自數據庫,需要一些時間來加載。一旦它加載,我可以繼續前進。
請在此幫忙
在webdriver中,如何讓webdriver等待文本字段中出現文本。在文本字段中等待直到文本
實際上,我有一個kendo文本字段的值來自數據庫,需要一些時間來加載。一旦它加載,我可以繼續前進。
請在此幫忙
您可以使用WebDriverWait。從文檔例如:
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.findElement(...).getText().length() != 0;
}
});
使用WebDriverWait(org.openqa.selenium.support.ui.WebDriverWait)和ExpectedCondition(org.openqa.selenium.support.ui.ExpectedConditions)對象
WebDriverWait wait = new WebDriverWait(driver, 30);
wait.until(ExpectedConditions.textToBePresentInElement(By.id("element_id"), "The Text"));
你可以使用一種簡單的方法,在該方法中,您需要傳遞文本即將到來的驅動程序對象webelement和正在發送的文本。
public static void waitForTextToAppear(WebDriver newDriver, String textToAppear, WebElement element) {
WebDriverWait wait = new WebDriverWait(newDriver,30);
wait.until(ExpectedConditions.textToBePresentInElement(element, textToAppear));
}
這是不對的,它看起來對於給定的'WebElement'內的文本節點,即,其它元素的文本,元素之間的文本,等等。問題是關於輸入中的文本,所以它需要是'ExpectedConditions.textToBePresentInElementValue'。 – Robert 2016-06-22 14:23:05
您可以使用WebDriverWait。從文檔例如:
以上ANS使用.getTex()從輸入字段,這是沒有返回文本
使用.getAttribute( 「值」),而不是的getText()
(new WebDriverWait(driver, 10)).until(new ExpectedCondition<Boolean>() {
public Boolean apply(WebDriver d) {
return d.findElement(...).getAttribute("value").length() != 0;
}
});
測試 100%的工作 希望這將有助於
這是我發送文本輸入解決方案:
public void sendKeysToElement(WebDriver driver, WebElement webElement, String text) {
WebDriverWait wait = new WebDriverWait(driver, Configuration.standardWaitTime);
try {
wait.until(ExpectedConditions.and(
ExpectedConditions.not(ExpectedConditions.attributeToBeNotEmpty(webElement, "value")),
ExpectedConditions.elementToBeClickable(webElement)));
webElement.sendKeys(text);
wait.until(ExpectedConditions.textToBePresentInElementValue(webElement, text));
activeElementFocusChange(driver);
} catch (Exception e) {
Configuration.printStackTraceException(e);
}
}
WebElement nameInput = driver.findElement(By.id("name"));
sendKeysToElement(driver, nameInput, "some text");
儘管您提供的代碼可能包含OP問題的答案 - 但如果沒有解釋您如何解決問題,該帖子並不是非常有用。 – Tom 2017-05-19 11:41:06
工作和使用lambda函數的單線程。
wait.until((ExpectedCondition<Boolean>) driver -> driver.findElement(By.id("elementId")).getAttribute("value").length() != 0);
textToBePresentInElement()現在已經過時 – 2017-03-10 18:34:23