WebDriverIO:返回可见元素?

时间:2018-09-28 17:59:58

标签: javascript node.js selenium ecmascript-6 webdriver-io

我正在使用WebDriverIO开发一个测试套件,其中被测试的站点具有多个重复元素,但是它们通过用户交互而有选择地显示...

例如,可能有五个按钮可以打开五个工具提示-但是每个工具提示都是其他工具的副本(相同的类名,数据属性以及所有有趣的东西)。

我是否可以捕获/返回可见的工具提示?

我可以使用...捕获真/假。

let visElements = browser.isVisible('div.tooltip');

(返回类似[false, true, false, false, false]的数组) 有没有办法将真实元素返回进行其他测试?

更新:

到目前为止,我的解决方案还不够完善...

let visElements = browser.elements('div.tooltip');
let visBool     = browser.isVisible('div.tooltip');
let index       = (visBool === true)? 0 : visBool.indexOf(true);
let element     = visElements.value[index];

...这真的只能工作,因为我正在使用的代码一次只能显示一个工具提示。在任何其他情况下,它都容易出错。

1 个答案:

答案 0 :(得分:0)

您可以使用数组上可用的the newish find function在该数组中搜索一个可见元素:

let tooltips = browser.elements('div.tooltip');

let visibleTooltip = tooltips.find(tt => tt.isVisible())

// can do any element function on it like getText
visibleTooltip.getText()

如果要获取所有可见的工具提示,可以use filter instead

let tooltips = browser.elements('div.tooltip');

let visibleTooltips = tooltips.filter(tt => tt.isVisible())

// can do any element function on it like getText
let ttText = visibleTooltips.map(tt => tt.getText())