[英]Custom wait condition in selenium-webdriver (javascript bindings) is not working
我在定義自定義等待條件時遇到硒javascript綁定問題。 我正在編寫一個測試用例,以測試按鈕的功能,其中首先禁用按鈕,但最終將其啟用。 狀態之間的等待時間非常長(4分鍾),因為在頁面加載時會播放一個教程動畫,完成后將啟用該按鈕。
我已經嘗試在按鈕上使用until.elementIsEnabled條件,但這不起作用。 因此,我一直在嘗試使自定義條件起作用。
driver.wait(function() {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);
從該示例中,我有這段代碼等待狀態變為true:
const locator = { id: "Button" };
await driver.wait(until.elementLocated(locator));
const button = await driver.findElement(locator);
await driver.wait(async function () {
const attr = await button.getAttribute("enabled");
log.info(model.browser.type + " - " + "Polling attribute value: " + attr);
return await attr === true;
}, 400000);
從那里的日志記錄(這是js-logging npm程序包),我看到selenium-webdriver每毫秒將代碼循環一次,並且狀態確實從false變為true進入了循環大約4分鍾,這是預期的。 但是循環一直持續到到達變量值狀態更改后大約兩分鍾的超時值400000ms。
我在這里想念什么?
您嘗試使用fluentWait
嗎?
Wait wait = new FluentWait(driver)
.withTimeout(30, SECONDS)
.pollingEvery(5, SECONDS)
.ignoring(NoSuchElementException.class);
WebElement foo = wait.until(new Function() {
public WebElement apply(WebDriver driver) {
return driver.findElement(By.id("foo"));
}
});
WebDriver#wait的文檔要求將WebDriver對象作為參數傳遞給函數。
await driver.wait(function(driver) {
return driver.getTitle().then(function(title) {
return title === 'webdriver - Google Search';
});
}, 1000);
或者,您可以使用Promise或Condition 。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.