【问题标题】:protractor table.filter times out量角器 table.filter 超时
【发布时间】:2023-04-02 18:25:02
【问题描述】:

我已经使用量角器 + 黄瓜编写了我的第一个 Angular 2 验收测试,当我调用 table.filter 时,浏览器似乎挂起并超时,直到超时时间。

我使用 chai-as-promised 来满足期望:

var chai = require('chai');
var chaiAsPromised = require('chai-as-promised');
chai.use(chaiAsPromised);
var expect = chai.expect;

下面是不起作用的代码。

var grid = $$(".table tr");
grid.filter(function (row) {
    var cells = row.$$('td');
    expect(cells.get(0).getText()).to.eventually.equal(factoryName).and.notify(done);

我已经通过将上面的代码替换为:

var grid = $$(".table tr");
for (var i = 1; i < grid.count() ; i++) {
    var cells = grid.get(i).$$('td');
    expect(cells.get(0).getText()).to.eventually.equal(factoryName).and.notify(done);
}

我正在努力寻找 table.filter 导致超时的原因。

谁能帮我写文章/帖子,如何将这些steps.js转换成TypeScript,这是在angular2中测试的正确方法?

【问题讨论】:

    标签: javascript testing angular protractor automated-tests


    【解决方案1】:

    .filter() 期望过滤器函数从它返回一些东西(一个布尔值,或解析为布尔值的承诺,以决定是否跳过数组中的元素) .

    据我了解,您的意思是:

    var grid = $$(".table tr");
    var desiredRow = grid.filter(function (row) {
        var cells = row.$$('td');
        return cells.first().getText().then(function(cellText) {
            return cellText === factoryName;
        });
    }).first();
    // do something with the desiredRow
    

    或者,如果您要检查每行的第一个单元格是否等于factoryName,您应该/可以使用each()

    var grid = $$(".table tr");
    grid.each(function (row) {
        var cells = row.$$('td');
        expect(cells.first().getText()).to.eventually.equal(factoryName);
    });
    

    或者,您可以使用 first-of-type CSS selector pseudo-class 定位每行的第一个单元格,然后断言数组的所有元素都具有 factoryName 值:

    var cells = $$(".table tr td:first-of-type");
    
    // example for 2 rows
    // for N rows, http://stackoverflow.com/questions/14832603/check-if-all-values-of-array-are-equal
    expect(cells.getText()).toEqual([factoryName, factoryName]);
    

    【讨论】:

    • 我尝试使用每个函数,但它给出了每个函数都不是函数的错误,然后我发现过滤器可以替代每个函数。我的要求是检查第一个单元格是否包含 factoryName。
    • 当它与工厂名称匹配或在过滤器函数中有expect()时,是否可以使用过滤器获取第一个单元格值
    • @KamranPervaiz 关于each()..这很奇怪..你用的是什么版本的量角器?
    • 我使用了你的 .each 函数,但它也超时了,我不知道为什么。我正在使用 protractro“3.3.0”。我的要求是只获取第一个单元格值并检查 factoryName 是否存在。如果存在则调用回调函数完成
    猜你喜欢
    • 1970-01-01
    • 2013-07-06
    • 1970-01-01
    • 1970-01-01
    • 2017-10-03
    • 2020-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多