gpt4 book ai didi

angularjs - Protractor 使用 element.all 检查元素是否存在于 LIST 上

转载 作者:行者123 更新时间:2023-12-02 23:56:51 24 4
gpt4 key购买 nike

我需要进行断言来检查“elements.all”中是否存在元素。

我的第一个想法是运行一个 for 循环并在里面放入一个期望。这不是一个好主意,因为它正在检查列表上的每一项。因此,如果我有 30 项,最终可能会失败 29 项。

element.all(by.css(element)).then(function(itemList) {
console.log("Total values in dropdown are: " + itemList.length);
for (i = 0; i < itemList.length; i++) {
itemList[i].getText().then(function(text) {
console.log(text);
expect(text).toEqual('whatever-i-need-to-assert');
});
};
});

为了解决这个问题,我嵌套了一个 IF 语句来“预检查”字符串匹配。另一个坏主意,因为如果没有匹配,我的期望将永远不会运行,因此,给我一个错误的通过:

element.all(by.css(".item a.gc-exercises-link")).then(function(itemList) {
console.log("Total values in dropdown are: " + itemList.length);
for (i = 0; i < itemList.length; i++) {
itemList[i].getText().then(function(text) {
console.log(text);
if (text == 'BOATLIFT-EXERCISE') {
console.log('Match');
expect(text).toEqual('BOATLIFT-EXERCISE');
} else {
console.log('No Match');
};
});
};
});

显然,我走错了路。有人可以告诉我如何在使用 element.all 时正确期望“文本”吗?我只需要证明该列表中存在文本即可。

谢谢!

最佳答案

以下示例用于检查页面中是否存在包含文本“Terms”的链接:

browser.get('https://www.google.co.uk/');
expect(element.all(by.css('a')).getText()).toContain('Terms');

请注意,对于每个元素, Protractor 都需要询问浏览器,这可能会很慢,尤其是在元素很多的情况下。

一种更快的解决方案是检查至少一个元素是否存在包含预期文本的 XPath:

browser.get('https://www.google.co.uk/');
expect(element.all(by.xpath("//a[text()='Terms']")).count()).toBeGreaterThan(0);

关于angularjs - Protractor 使用 element.all 检查元素是否存在于 LIST 上,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37189453/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com