webdriverio元素在箭头功能内部未定义

问题描述 投票:0回答:2

我正在从事webdriverio自动化项目。我有以下代码。

waitUntilVisible(element, maxTimeOut) {
    console.log("********** PARAMETER ************" + element);

    const testelement = $('#identifierId');

    browser.waitUntil(testelement => {

        console.log("************** INSIDE *********" + testelement);

        return testelement.isDisplayed();

    }, maxTimeOut, 'Wait for element to be visible');
}

testelement始终返回未定义。有人可以建议我出什么事了。

javascript node.js selenium-webdriver webdriver-io
2个回答
1
投票
/**
 * Check if the given element is (not) visible
 * @param  {String}   selector   Element selector
 * @param  {String}   falseCase Check for a visible or a hidden element
 */
const isDisplayed = async (selector, falseCase) => {
    let elem = await browser.$(selector);
    const displayed = await elem.isDisplayed();
    if (falseCase) {
        expect(displayed).to.not
            .equal(true, `Expected element "${selector}" not to be displayed`);
    } else {
        expect(displayed).to
            .equal(true, `Expected element "${selector}" to be displayed`);
    }
}

使用浏览器。$(选择器),并使用该元素继续进行测试。我添加了一种方法来检查元素是否为isDisplayed。


0
投票

为什么不使用waitForDisplayed

但是,如果要使用自己的-调用函数时会遇到问题


waitUntilVisible(element, maxTimeOut) {
    console.log("********** PARAMETER ************" + element);
    //this is never called due same name of variable in fn waitUntil
    const testelement = $('#identifierId');

可能的解决方案:

// if you want to pass selector 
waitUntilVisible(elementSelector, maxTimeOut) {
    console.log("********** PARAMETER ************" + elementSelector);
    browser.waitUntil(testelement => {
        console.log("************** INSIDE *********" + elementSelector);
        return $(elementSelector).isDisplayed();
    }, maxTimeOut, 'Wait for element to be visible');
}

// if you want to pass WebDriverIO object 
waitUntilVisible(element, maxTimeOut) {
    console.log("********** PARAMETER ************");
    browser.waitUntil( () => {
        console.log("************** INSIDE *********");
        return element.isDisplayed();
    }, maxTimeOut, 'Wait for element to be visible');
}

© www.soinside.com 2019 - 2024. All rights reserved.