如果我有一个类的多个对象,但只有一些可见,那么找到第一个可见的最佳方法是什么。我目前正在尝试:
browser.waitForElementVisible('.myClass', timeOut)
可以查看所有元素,但只会在第一个元素上执行操作。 OR
browser.waitForElementVisible('(//div[@class="myClass"])[1]')
指定索引,但可能显示也可能不显示,因为每次页面刷新时都会加载新数据。
我需要循环遍历所有现在,只需单击可见的第一个实例。我知道我可以通过自定义命令实现这一目标,但我是js和nightwatch的新手,所以我不确定该怎么做。
答案 0 :(得分:0)
我想我可能会使用.elementIdDisplayed()
来完成此任务。
下面的代码段可以帮助您
通常我会使用forEach
循环但是因为你不能在不做一些hacky的情况下突破它,只需使用常规的旧for循环:
browser.elements('css selector', '.myClass', function(elements) {
for(let i = 0; i < elements.value.length; i++) {
browser.elementIdDisplayed(elements.value[i].ELEMENT, function(isDisplayed) {
if(isDisplayed.value) {
browser.elementIdClick(element.value[i].ELEMENT);
break; //this will break out of the loop when you find the first displayed element
}
});
}
});