Webdriverio等到可见

时间:2019-05-11 21:26:23

标签: async-await webdriver-io

我正在使用webdriverio,需要等待元素进入视口

所以我尝试了

browser.waitUntil(async () => {
    const b = await link.isDisplayedInViewport()
    return b;
}, 5000, 'expected to be visible after 5s');

但是以某种方式waitUntil想要布尔值而不是Promise<boolean>

enter image description here

我该如何解决?

更新:

我在NodeJs应用程序中按如下方式使用WebdriverIO

const { remote } = require('webdriverio');

(async () => {
    const browser = await remote({
        logLevel: 'error',
        path: '/',
        capabilities: {
            browserName: 'chrome'
        }
    });

    await browser.url('https://example.com');

    const link = await browser.$('.special-link');
    const ok = await browser.waitUntil(async () => {
        const b = await link.isDisplayedInViewport()
        return b;
    }, 5000, 'expected to be visible after 5s');

    await link.click();

    const title = await browser.getTitle();
    console.log('Title was: ' + title);

    await browser.deleteSession();
})().catch((e) => console.error(e));

source

options中看不到关于有无异步/等待的任何信息。此外,我不使用测试框架!

2 个答案:

答案 0 :(得分:2)

很抱歉,您的回答很晚。但是,如果您仍在寻找解决方案,请避免使用aync / await

 get link() { return browser.element('.special-link'); }

 browser.waitUntil(() => this.link.isVisibleWithinViewport(), 20000, 'link not visible')

答案 1 :(得分:0)

df = df[df.columns[1:].tolist() + df.columns[:1].tolist()]
print (df)
    a   b  c  d  ratio
0  34  63  1  5   0.67
1  34  63  3  7   0.90
2  24  74  2  6   0.20
3  24  74  4  8   0.34
4  56  56  1  5   0.70
5  56  56  3  7   0.50

如果将const elementWaitingToBeDisplayed = $("some element locators") elementWaitingToBeDisplayed.waitForDisplayed(10000, false) 的第二个参数设置为elementWaitingToBeDisplayed.waitForDisplayed,它将等待相反的情况。