Как решить staleElementReferenceError: ссылка на устаревший элемент: элемент не прикреплен к документу страницы в транспортире? - PullRequest
0 голосов
/ 10 октября 2019

Мое приложение имеет более 1 кнопки входа в систему, и оно выходит из строя на 1-й и 8-й итерациях из 12 итераций при тестировании различных функций. Нужны предложения по исправлению кода. 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 голосов
/ 10 октября 2019

Ниже мой рабочий код:

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);
    }

}
0 голосов
/ 10 октября 2019

Вы можете попробовать добавить elementToBeClickable ожидание между presenceOf и фактическим click()

Итак:

  1. Ожидание присутствия
  2. Дождитесь кликабельного
  3. Нажмите на него
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...