【发布时间】:2020-12-01 23:56:33
【问题描述】:
我有一些有不同领域的卡片。文本看起来像这样。
梗犬
2 岁
雷克斯的名字
位置科罗拉多
我需要通过多个文本匹配一张卡片。所以element(by.cssContainingText('#age', 'Age 2')) 不是很有帮助,因为我还需要 '#location' 来匹配 'Colorado'。
我尝试的是链接element.all(by.cssContainingText('#card','Age')).element.all(by.cssContainingText('#location', 'Colorado')),但它似乎不起作用而且非常混乱。
最终目标是点击匹配的第一张卡片。
我还尝试创建一个与文本匹配的函数。但是,如果第一次点击后有多个匹配项,它也会尝试点击下一个匹配项,我会收到一个过时的元素错误。
public clickDogCardByAgeAndLocation(age: string, location: string) {
common.waitForElement($('dog-card'));
$$('dog-card').each(element => {
element.getText().then(text => {
if (text.includes(age) && text.includes(location)) {
console.log('CARD SUCCESS');
element.click();
}
});
});
}
我相信有一种更优雅的方法可以做到这一点。 谢谢!
【问题讨论】:
标签: selenium protractor