Thread.sleep在测试脚本中替换

时间:2018-06-18 06:59:12

标签: java selenium selenium-chromedriver

我正在自动化一个网站,在该网站中,教程完全相同,并且#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执行器和动作似乎也没有。

2 个答案:

答案 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)