После долгих исследований и переделки я не могу заставить свой тест Protractor делать что-либо еще, кроме ошибки, связанной с Angular, хотя я использую браузер, чтобы вообще избежать обнаружения Angular.
Тест включает в себя приложение Angular, открытие в нем раскрывающегося списка и нажатие на ссылку для консоли; консоль открывает не-Angular страницу администратора в отдельном окне.
Итак, основываясь на многих информативных сообщениях SO, которые я нашел, я впервые использовал это...
browser.driver.getAllWindowHandles().then(function(handles) {
browser.driver.switchTo().window(handles[1]).then(function() {
//expect for new window here
});
});
Что, похоже, сработало, так как я мог довольно легко добраться до окна через repl
. Проблема заключается в том, что было добавлено одно из следующих...
browser.driver.getAllWindowHandles().then(function(handles) {
browser.driver.switchTo().window(handles[1]).then(function() {
expect(browser.getLocationAbsUrl()).toContain('/console/login.jsp');
expect(browser.driver.findElement(By.css('th.login')).getText()).toEqual('Login');
});
});
Один ожидает проверки URL-адреса, а другой проверяет элемент header
на странице, который является заголовком таблицы. Когда я запускаю это, я получаю следующее:
Ошибка при ожидании синхронизации Protractor со страницей: «не удалось найти угловой в окне»
Когда я решаю использовать browser.ignoreSynchronization = true
как в функции, так и в beforeEach
, с последующим afterEach
значением false или без него, я получаю следующее:
JavascriptError: angular не определен
Кажется, я не могу получить какие-либо «полезные» ошибки, которые помогут мне отладить его, и попытка в repl
не помогает, так как я получаю ту же проблему. Чтобы быть исчерпывающим, попытка моего URL-адреса ожидать без получения второго окна даст мне корень, а другое не удастся. Просто выполнение одного или другого вызовет ту же проблему. Переход на обычный синтаксис (element(by.css...)
) ничего не меняет.