У меня есть регулярный (не JS) якорный тег, который ссылается на внешний сайт, но с дополнительным поведением для кликов, который меняет DOM
<body ng-controller="MyController">
<a href="https://www.google.co.uk/" ng-click="inProgress = true">
{{ inProgress ? "Going to Google" : "Go to Google" }}
</a>
</body>
Я бы хотел протестировать это поведение в тесте на транспортировщик E2E. Однако, похоже, что после нажатия ссылки последующие команды запускаются в контексте внешней страницы. Например, проходит следующий тест:
browser.element(by.css('a')).click();
expect(browser.getCurrentUrl()).toBe('https://www.google.co.uk/');
но следующий тест не выполняется
browser.element(by.css('a')).click();
expect(browser.element(by.css('body')).getText()).toBe('Going to Google');
с ошибкой отображается содержимое главной страницы Google как текст body
.
Как я могу проверить, что происходит после щелчка на теге, отличном a
Javascript?
Полагаю, вам нужно дождаться изменения текста после нажатия. Из вашего кода вы ищете текст сразу после нажатия? Вы пробовали ожидаемые условия
var EC = protractor.ExpectedConditions;
browser.wait(EC.textToBePresentInElement($('body'), 'Going to Google'), 5000);