angularjs - 告诉 Protractor 在执行 expect 之前等待页面

标签 angularjs selenium testing protractor e2e-testing

当我单击导出按钮时,它会向我们的端点发出 REST 调用,然后几秒钟后,我收到响应,然后我也呈现表格。不幸的是,我读到每个调用都是异步的,这意味着即使表尚未呈现,我的期望也会被执行。我写的 expect 检查字符串是否在表上,但它失败了,因为它还不存在。正确的做法是什么?

it('should generate global user report', function() {
    element(by.css('button#exportButton')).click();

    expect(element(by.css("th[name*=Date]")).getText()).
        toEqual('Date');
})

控制台上的错误是

NoSuchElementError: No element found using locator: By.cssSelector("th[name*=Date]")

我注意到表格尚未呈现,这就是它失败的原因。

最佳答案

Protractor 1.7 引入了一项名为 "Expected Conditions" 的功能, 可以在这里应用。

等待元素变得可见:

var EC = protractor.ExpectedConditions;
var elm = element(by.css("th[name*=Date]"));

browser.wait(EC.visibilityOf(elm), 5000);
expect(elm.getText()).toEqual('Date');

关于angularjs - 告诉 Protractor 在执行 expect 之前等待页面,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28858339/

相关文章:

angularjs - q promise 在完成之前解决?

angularjs - AngularJS 中跨域 REST 调用的正确架构模式是什么?

java - Selenium WebDriver findelement 卡住了 java?

javascript - AngularJS 自定义验证 - 在 Controller 中将表单项设置为无效

javascript - 扩展和折叠 ng-table 的行不起作用

c# - 如果在 Selenium C# 中有其他条件

java - 如何比较字符串列表中的元素与字符串数组列表?

Android:如何从任何应用程序或通过 adb 捕获屏幕上的文本?

python - django 是否需要先设置 TEST_RUNNER 才能运行 doctest?

testing - HP LoadRunner 和 PerformanceCenter 的区别