javascript - 测试每个元素是否包含带有 Protractor 的元素

标签 javascript angularjs selenium testing protractor

我想测试每个元素 .elem1 是否包含元素 .elem2。尝试过,但似乎没有按预期工作:

expect(element.all(by.css('.elem1')).all(by.css('.elem2')).isDisplayed()).toBeTruthy();

最佳答案

如何将 elem1 元素的数量与内部包含 elem2 元素的 elem1 元素的数量进行比较:

var elem1count = element.all(by.xpath("//*[contains(@class, 'elem1')]")).count();
var elem1WithElem2count = element.all(by.xpath("//*[contains(@class, 'elem1') and .//*[contains(@class, 'elem2')]]")).count();
elem1WithElem2count.then(function (elem1WithElem2count) {
    expect(elem1count).toEqual(elem1WithElem2count);
});

是的,这有点难看。

类似的想法,但使用 filter() :

var elem1count = element.all(by.css(".elem1")).count();
var elem1WithElem2count = element.all(by.css(".elem1")).filter(function (elem1) {
    return elem1.element(by.css('.elem2')).isPresent();
}).count();

elem1WithElem2count.then(function (elem1WithElem2count) {
    expect(elem1count).toEqual(elem1WithElem2count);
});

或者,你可以用 reduce() 来解决它:

var result = element.all(by.css('.elem1')).reduce(function(acc, elem1) {
    return elem1.element(by.css('.elem2')).isPresent().then(function (isPresent) {
        return acc && isPresent;
    });
}, false);
expect(result).toBe(true);

在这里,对于每个 elem1 元素,我们获取一个 bool 变量,指示 elem2 元素是否存在,然后将所有 bool 值简化为单个 bool 值。

您还可以使用each()并对每个elem1进行expect检查:

element.all(by.css('.elem1')).each(function(elem1) {
    expect(elem1.element(by.css('.elem2')).isPresent()).toBe(true);
});

关于javascript - 测试每个元素是否包含带有 Protractor 的元素,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33526058/

相关文章:

javascript - 尝试导入错误: 'App' is not exported from './App'

javascript - 导出包含 MathJax 结果的 HTML

javascript - 如何将(kml的路径)替换为变量?我正在使用 geoxml3

angularjs - AngularJS 中的模糊匹配/多字段匹配

java - Selenium 测试日期输入时遇到问题,其中输入有最大和最小日期

selenium - 网络驱动程序错误: disconnected: unable to connect to renderer

javascript - 如何同时切换三个元素中的类

javascript - 提供文件数据时触发 'drop'事件

javascript - 显示无效登录等警报消息的 Angular 方式是什么?

java - 尝试使用 selenium 4 打开新选项卡时,我看到 "Selenium.InvalidArgumentException: invalid argument"错误