Я использую Protractor для тестирования приложения, состоящего из 3 компонентов:
OpenAM
компонент неуглового входа,
- Неугловой компонент приложения,
- Угловой компонент приложения.
Сначала я захожу, используя компонент OpenAM. Перед входом в систему я включаю browser.waitForAngularEnabled(false)
, потому что в противном случае я получаю ошибку Angular could not be found on the page
, что вполне разумно.
Затем я выполняю некоторые шаги в неугловом компоненте приложения, и они выполняются без ошибок, хотя я не включаю browser.waitForAngularEnabled(false)
ни в код шага, ни в файл conf.
Затем, используя ссылку внутри неуглового компонента приложения, я перехожу к угловому компоненту приложения, который открывается в новой вкладке браузера, и здесь все чертовски разрушается. Элементы на странице не найдены, даже при использовании ожидания, сна и т. Д., Поэтому я попытался использовать browser.waitForAngularEnabled(true)
, но когда я это сделал, я получил
Ошибка при ожидании синхронизации транспортира со страницей: «оба
angularJS тестируемость и угловая тестируемость не определены ".
Интересно то, что при переходе непосредственно к компоненту углового приложения со страницы входа в систему OpenAM
таких проблем не возникает, и все шаги выполняются просто отлично.
Вот логин:
export class LoginPage {
public async loginUsingCredentials(user, pass) {
browser.waitForAngularEnabled(false);
await browser.get(config.baseUrl);
await username.sendKeys(user);
await password.sendKeys(pass);
await signIn.click();
}
}
Он выполняется как крючок BeforeAll.
Другие тестовые этапы не имеют значения для публикации здесь.
Важно то, что если я перейду непосредственно к компоненту углового приложения, используя browser.get('example:8080/angularapp')
, все шаги будут выполнены без ошибок.
Но если я сначала перейду к основному компоненту приложения browser.get('example:8080')
, выполнив несколько шагов, а затем перейду к угловому компоненту по ссылке, я получу ошибки, как описано выше.
В обоих случаях шаги теста для углового компонента одинаковы. Также в обоих случаях мне нужно сначала войти в систему, используя OpenAM
.