Транспортир 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 в начале вашего теста. Может быть приложение, которое вы пытаетесь автоматизировать, не содержит в нем угловых.

Другие вопросы по тегам