Транспортир element.click() выбрасывает исключение
Я пытался понять, почему .click()
ниже был сбой транспортира:
this.clickSecondPanel = function () {
element(by.css('div.panels-gs.panel-top-two-gs')).click();
}
пока я не изменил строку на:
element(by.css('div.panels-gs.panel-top-two-gs')).click;
где мой spec.js выглядит примерно так:
var DataCardPage = require('./pageObjects/dataCard.page.js');
var dataCardPage = new DataCardPage();
describe('Clicking on the 2nd panel', function () {
dataCardPage.clickSecondPanel();
it('Should select the 2nd test panel', function () {
expect(dataCardPage.getSecondPanelText()).toBe('TEST123');
});
В других местах в моем коде я использую .click()
(с круглыми скобками), так что это меня смущает.
Ошибка мерзкая:
Started
[17:44:23] E/launcher - Error while waiting for Protractor to sync with the page
: "window.angular is undefined. This could be either because this is a non-angu
lar page or because your test involves client-side navigation, which can interfe
re with Protractor's bootstrapping. See http://git.io/v4gXM for details"
Любой совет приветствуется...
боб
2 ответа
Решил это в комментариях выше, разместив в качестве ответа.
Мое предложение состояло в том, чтобы попытаться переместить clickSecondPanel()
внутри it
блок. Это выглядело подозрительно само по себе только с точки зрения "лучшей практики", так как у меня нет кода, который находится вне функции жасмина, т.е. it
, beforeAll
, afterAll
и т.д. (даже не знаю, где я научился этой привычке честно).
Похоже, что это также влияет на поток управления и асинхронное выполнение, поэтому click()
событие начиналось слишком рано. Это может быть частично объяснено этой документацией и / или этой записью в блоге
Попробуйте использовать browser.ignoreSynchronization=true
в начале вашего теста. Может быть приложение, которое вы пытаетесь автоматизировать, не содержит в нем угловых.