如何解决staleElementReferenceError:stale元素引用:量角器中未将元素附加到页面文档?

时间:2019-10-10 14:13:24

标签: typescript jasmine protractor

我的应用程序有多个“登录”按钮,并且在测试各种功能时12次迭代中的第1次和第8次迭代失败。需要建议来修复代码。 Dom Snippet

public async clickLoginMenu() {
    try {
        const button = await element(await by.buttonText('Login'));

           /* await browser.executeScript('return arguments[0].click()', await button).then(() => {
                browser.sleep(2000);
            });*/

            await browser.wait(until.presenceOf(await button), TIMEOUT_MILLIS,
                'Unable to locate logout button.');
            await button.click();
        } else {
            logger.info('Cannot find the login button to click');
        }
    } catch (e) {
        logger.error('Throw Exception error ' + e);
    }

}

2 个答案:

答案 0 :(得分:0)

您可以尝试在elementToBeClickable与实际presenceOf之间添加click()

所以:

  1. 等待出席
  2. 等待点击
  3. 单击它

答案 1 :(得分:-1)

下面是我的工作代码:

public async clickLoginMenu() {
    try {
        const button = await element(await by.buttonText('Login'));
        if (await button.isDisplayed()) {
        await browser.wait(until.elementToBeClickable(await button), TIMEOUT_MILLIS,
                'Unable to locate logout button.');
        await button.click();
        } else {
            logger.info('Cannot find the login button to click');
        }
    } catch (e) {
        logger.error('Throw Exception error ' + e);
    }

}