单击和内容加载完成后如何运行Protractor测试?

时间:2015-12-17 12:46:01

标签: javascript angularjs testing protractor end-to-end

我有这个测试代码:

element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click()
browser.sleep(1000)
expect(element.all(by.tagName('angular-chart')).count()).toEqual(1);

但它会挂起,直到达到超时,然后显示:

  

错误:超时 - 在jasmine.DEFAULT_TIMEOUT_INTERVAL指定的超时时间内未调用异步回调。

我想我需要等待内容以某种方式加载然后运行测试?

如果我将expect构造替换为下面的构造,则传递:

expect(true).toEqual(true)

2 个答案:

答案 0 :(得分:0)

试试这个:

element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click().then( function(){
      expect(element.all(by.tagName('angular-chart')).count()).toEqual(1);
});

量角器中的大多数调用都会返回一个承诺。 http://www.protractortest.org/#/api?view=webdriver.WebElement.prototype.click

答案 1 :(得分:0)

让我们尝试添加明确的等待以等待angular-chart元素to become present

var EC = protractor.ExpectedConditions;

element(by.cssContainingText('a[ng-click="select()"]', 'Visual')).click()

var chart = element(by.tagName('angular-chart'));
browser.wait(EC.presenceOf(chart), 10000);

您还可以考虑增加jasmine timeout intervals