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

dev*_*abe 2 testing selenium angularjs protractor e2e-testing

当我单击导出按钮时,它会对我们的端点进行REST调用,然后几秒钟后,我收到响应,然后我也会渲染表.不幸的是,我读到每个调用都是异步的,这意味着即使表还没有呈现,我的期望也会被执行.期望我写了检查字符串是否在桌子上,但它失败了,因为它还没有.对此有什么正确的解决方法?

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

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

控制台上的错误是

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

我注意到表还没有呈现,这就是它失败的原因.

ale*_*cxe 7

Protractor 1.7引入了一项名为"预期条件"的功能,可在此处应用.

等待元素变得可见:

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

browser.wait(EC.visibilityOf(elm), 5000);
expect(elm.getText()).toEqual('Date');
Run Code Online (Sandbox Code Playgroud)