繁体   English   中英

用量角器测试每个元素是否包含一个元素

[英]Test if each element contains an element with protractor

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

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

你如何比较elem1元素的数量和elem1elem2元素的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元素,我们得到一个布尔变量,指示elem2元素是否存在,然后将所有布尔值减少为单个布尔值。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM