WebdriverIo 对于异步测试和钩子,请确保调用"done()";如果返回承诺,请确保它解决



我已经看到了这个解决方案,但它没有帮助。

我正在尝试使用摩卡运行 webdriver.io 测试,这里我使用的是 browser.waitUntil(( 方法,webdriver.io,更多详细信息可以在这里找到:https://webdriver.io/docs/api/browser/waitUntil.html我已经尝试了不同的解决方案来解决这个问题,包括在方法调用中添加"done",并且我在 conf 中给出了最大超时.js以及这里的 10000ms,但仍然,该页面似乎挂在结果页面上。

此处增加超时:

   mochaOpts: {
        ui: 'bdd',
        timeout: 100000
    },

将摩卡的默认等待时间更改为 100000ms添加完成作为承诺决议

it('should see product and version selected', () => {
        browser.url('//some url');
        browser.maximizeWindow();
        browser.waitUntil(() => {
            return $(ProductPage.productSelector()).isDisplayed()
        }, 100000, 'expected page is loaded');
        let productSelector = ProductPage.otherProductSelector();
        let isEnabled = productSelector.isEnabled();
        if(isEnabled == true){
            const spanEle = $('//span[contains(text(),"text")]');
            isDisplayed = spanEle.isDisplayed();
            console.log(isDisplayed);
            assert.equal(isDisplayed, true, "Passed");
        }
    })

错误:

Timeout of 100000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves. 
it('should see product and version selected', (done) => {
    browser.url('//some url');
    browser.maximizeWindow();
    browser.waitUntil(() => {
        return $(ProductPage.productSelector()).isDisplayed()
    }, 100000, 'expected page is loaded');
    let productSelector = ProductPage.otherProductSelector();
    let isEnabled = productSelector.isEnabled();
    if(isEnabled == true){
        const spanEle = $('//span[contains(text(),"text")]');
        isDisplayed = spanEle.isDisplayed();
        console.log(isDisplayed);
        assert.equal(isDisplayed, true, "Passed");
    }
    done();
})

我唯一能想到的是,done没有传入测试回调

it('should see product and version selected', (done) => {})

然后在最后打电话。测试中没有任何内容返回承诺。

在这里,我从测试中删除了browser.waitUntil(((( => { .. } 语句,并添加了WebdriverIO提供的不同等待。似乎有一些与此方法中的承诺返回相关的问题无法通过满足承诺或任何其他方法来解决它。我任何人都知道请对此答案添加评论。以下是更多详细信息: https://github.com/webdriverio/webdriverio/issues/2361

所以我所做的更改如下:

it('should see product and version selected', () => {
        browser.url('url');
        browser.maximizeWindow();
        let productSelector = $('#product-dropdown-toggle')
        let isEnabled = productSelector.isEnabled();
        if(isEnabled == true){
            const spanEle = $('//span[contains(text(),"text")]');
            isDisplayed = spanEle.isDisplayed();
            console.log(isDisplayed);
            assert.equal(isDisplayed, true, "Passed");
        }
    })

 waitForElemenDisplayed(element,timeout){
        element.waitForDisplayed(timeout);
    }

相关内容

最新更新