我正在使用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];
...这真的只能工作,因为我正在使用的代码一次只能显示一个工具提示。在任何其他情况下,它都容易出错。
答案 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())