如何使用 Protractor 等待行加载

How to wait for rows to load with Protractor

我正在尝试使用量角器 select 一行、计数行等。这似乎不起作用:

var GridTestUtils = require('./gridObjectTestUtils.spec.js');

var GridTestObj = new GridTestUtils('exampleGrid');
var Grid = GridTestObj.getGrid();

browser.wait(function(){

    return Grid.isPresent();

}, 1000).then(function(){

    GridTestObj.expectRowCount( 25 );

});

它似乎试图在加载行之前找到行。测试一直失败 'Expected 0 to equal 25'。

如果我使用 browser.sleep 我可以让它工作,但必须有比这更好的解决方案。

如何让量角器等待 Angular ui-grid 完全加载?

我会用 browser.wait() 自定义预期条件:

var rows = Grid.element( by.css('.ui-grid-render-container-body')).all( by.repeater('(rowRenderIndex, row) in rowContainer.renderedRows track by $index') );

browser.wait(function () {
    return rows.count().then(function (countValue) { 
        return countValue > 0;
    });
}, 5000);

在这种情况下,protractor 将连续执行传递给 browser.wait() 的函数,直到它的计算结果为真或发生超时(5 秒后)。