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

标签 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);

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

Error: Timeout - Async callback was not invoked within timeout specified by jasmine.DEFAULT_TIMEOUT_INTERVAL.

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

如果我将 expect 结构替换为下面的结构,它会通过:

expect(true).toEqual(true)

最佳答案

试试这个:

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

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

关于javascript - 单击和内容加载完成后如何运行 Protractor 测试?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34334977/

相关文章:

angularjs 测试 ng-include 文件是否存在

ruby-on-rails - 测试服务类 - Rails

android - Android应用的性能测试

javascript - For循环异步

javascript - 创建揭示模块模式的实例

javascript - 如果字段为空则跳过

javascript - jquery sum 不起作用,调用函数时总和变为零

AngularJS:在 iframe 中嵌入 Youtube 视频不适用于 Android Chrome

javascript - AngularJS 具有多个值的过滤器转发器

java - 多次运行验收测试以找出成功率(java)