【问题标题】:How to loop through each row within a table in a Protractor test?如何在量角器测试中遍历表中的每一行?
【发布时间】:2020-07-27 19:52:00
【问题描述】:

我正在尝试编写一个量角器测试,该测试在表格中每一行的第 4 个<td> 内打印文本。

目前,我可以使用以下代码打印第一行中包含的文本:

element(by.css('td:nth-child(4)')).getText().then((text) => {
    console.log('Text', text);
});

我创建了以下函数来尝试遍历表中的每一行:

function checkPrices() {
    element.all(by.tagName("tr")).each((item) => {
        item.element(by.css('td:nth-child(4)')).getText().then((text) => {
            console.log('Text', text);
        });
    });
}

但是当我运行它时,我收到了这个错误信息:

失败:使用定位器找不到元素:By(css selector, td:nth-child(4))

谁能告诉我哪里出了问题以及如何正确编写这个循环?

【问题讨论】:

    标签: angular protractor


    【解决方案1】:

    也许某些行不包含 4 个 td,这就是引发错误的原因。为什么不直接获取所有要素并获取它们的文本。

    expect(element.all(by.css('td:nth-child(4)')).getText()).toEqual(['text1', 'text2', 'text3'])
    

    【讨论】:

    • 感谢您的回答。这是有效的,但这是否被认为是对这样的数组进行硬编码的最佳实践?我不是说不是,我只是问,因为我是量角器的新手
    • 这是一个测试。应该很简单。如果测试和应用程序一样复杂,那你为什么要编写这些测试?在我看来,支持复杂的测试只会让整个工作变得更复杂,更不可靠
    • 没错,这很有道理!非常感谢您的帮助!
    猜你喜欢
    • 2020-11-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-04-14
    相关资源
    最近更新 更多