javascript - 如何在 e2e 测试中循环遍历行列

标签 javascript testing protractor end-to-end e2e-testing

我正在尝试测试表格的内容,我需要循环遍历所有行和列才能完成测试。我当前的代码是:

it('test', function () {
        var appRowLocator = by.repeater('appRow in model.getAppList()');

        browser.wait(function () {
            return element(appRowLocator).isPresent();
        }, 1000);

        var i = 0;
        element.all(appRowLocator).then(function(rows){
            expect(rows.length).toBe(2);
            while(i < 2){
                rows[i].all(by.tagName('td')).then(function(cols){
                    expect(cols.length).toBe(8);
                        expect(cols[0].getText()).toBe(summary.applicationSummaries[i].application.name);
                        expect(cols[2].getText()).toBe("");
                });
                i++;
            }
        })
    });

我正在访问单元格的内容,但测试仍然失败,因为计数器在 rows[i].all(....) 内递增。我的行长度是预期的两个,并且该预期通过了,但我仍然很困惑为什么计数器也在行 [i].all(...) 内递增。我得到的错误是:

Failed: Cannot read property 'application' of undefined

这是因为它试图访问索引为 2 的应用程序,而数组中没有该元素。

最佳答案

这里不需要then()。使用 get() 并让 expect() 为您解决 promise :

var cells = rows[i].all(by.tagName('td'));

expect(cells.count()).toEqual(8);
expect(cells.get(0).getText()).toBe(summary.applicationSummaries[i].application.name);
expect(cols.get(2).getText()).toBe("");

关于javascript - 如何在 e2e 测试中循环遍历行列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29118804/

相关文章:

javascript - TypeScript 的最佳实践是什么?

c - C 中的 TDD 测试。通过交换和排序测试吗?

Javascript onbeforeunload 打开 window.open() 弹出窗口

java - 如何配置 MockMvc 请求,它将作为我的 html 表单提交后发送的请求

api - 不同语言的相同测试

node.js - Protractor - 如果元素可见,如何添加 if 条件,因此跳过此测试用例,否则执行以下操作

javascript - 无法使用 Protractor 运行 cucumber 测试

javascript - 如何运行 Protractor browser.sleep 15 分钟

javascript - 使用 script.js 从 Typescript 加载模块

javascript - 使用 querySelectorAll 排除标签标签