我正在自动化一个网站,在该网站中,教程完全相同,并且#34;下一个"在下一个按钮出现之前触发短动画的按钮,所以我正在使用:
for (int i = 0; i <= 10; i++) {
wait.until(ExpectedConditions.elementToBeClickable(element)).click();
}
为了等待每个按钮可点击并单击它。 在完成10次点击&#34;下一步&#34;之后,我需要与其他元素进行交互。按钮。 调试这个工作正常,但运行它会在它们变得可点击之后点击元素几次,因为它的动画(代码点击一个元素几次,所以2-3次点击而不是10次)。
在for循环中使用Thread.sleep(5000);
似乎有效,因为它会等到每次点击后动画结束,但我想要更快的解决方案,而不是使用Thread.sleep();
JavaScript执行器和动作似乎也没有。
答案 0 :(得分:0)
您可以使用
new WebDriverWait(driver, 10).until(ExpectedConditions.invisibilityOfElementLocated(locator));
而不是
Thread.sleep(5000);
对于web元素的消失并继续进行。您可以为单击后显示的动画提供定位器。
答案 1 :(得分:0)
正如@cruisepandey提到的那样尝试找到元素的定位器你正试图等待(动画)找到它的定位器(id,tag,...)并使用wait for:
public static boolean isElementNotPresent(MobileDriver driver, WebElement elementName, int timeout){
try{
WebDriverWait wait = new WebDriverWait(driver, timeout);
wait.until(ExpectedConditions.invisibilityOf(elementName));
return true;
}catch(Exception e){
return false;
}
}
用法:
isElementNotPresent(driver, element, 30)