簡體   English   中英

selenium-webdriver(javascript綁定)中的自定義等待條件不起作用

[英]Custom wait condition in selenium-webdriver (javascript bindings) is not working

我在定義自定義等待條件時遇到硒javascript綁定問題。 我正在編寫一個測試用例,以測試按鈕的功能,其中首先禁用按鈕,但最終將其啟用。 狀態之間的等待時間非常長(4分鍾),因為在頁面加載時會播放一個教程動畫,完成后將啟用該按鈕。

我已經嘗試在按鈕上使用until.elementIsEnabled條件,但這不起作用。 因此,我一直在嘗試使自定義條件起作用。

根據直到條件API文檔 ,可以將自定義事件編碼為:

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM