量角器element.click()抛出异常

时间:2016-09-27 21:46:10

标签: protractor angularjs-e2e

我试图弄清楚为什么下面的.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()(带有parenths),所以这让我感到困惑。

错误很糟糕:

 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 个答案:

答案 0 :(得分:2)

在上面的评论中解决了这个问题,并将其作为答案发布。

我的建议是尝试移动clickSecondPanel()区域内的it。它本身只是从“最佳实践”的角度看起来很可疑,因为我没有任何茉莉花功能之外的代码,即itbeforeAllafterAll等等(不要甚至知道我在哪里诚实地学习了这种习惯。

它似乎也会影响控制流和异步执行,因此click()事件过早触发。这可以部分由this documentation和/或此blog post

解释

答案 1 :(得分:1)

在测试开始时尝试使用browser.ignoreSynchronization=true。可能是您尝试自动化的应用程序中不包含角度。