请问何时在Selenium Webdriver中使用显式等待vs隐式等待?

何时在Selenium Webdriver中使用显式等待vs隐式等待?

我在用:

driver.manage().timeouts().implicitlyWait(180, TimeUnit.SECONDS);

但是对于下面的元素,它仍然会不断失败

    driver.findElement(By.id("name")).clear();
    driver.findElement(By.id("name")).sendKeys("Create_title_01");

我添加了等待代码:

for (int second = 0;; second++) {
        if (second >= 120) fail("timeout");
        try { if (isElementPresent(By.id("name"))) break; } catch (Exception e) {}
        Thread.sleep(1000);
    }

不应该隐含等待,直到找到一个元素?如果我使用显式等待而不是我添加的代码,它会更好Thread.sleep()吗?


侃侃尔雅
浏览 368回答 3
3回答

芜湖不芜

隐式等待 - 它是适用于所有元素的全局设置,如果元素在指定时间之前出现,则脚本将开始执行,否则脚本将抛出NoSuchElementException。在setup方法中使用的最佳方法。只影响By.findelement()。Thread.sleep()- 它将为脚本休眠时间,而不是在脚本中使用的好方法,因为它无条件地睡眠。如果5%的情况下2秒不够怎么办?显式等待:等待指定包含/属性更改。当应用程序向系统提供AJAX调用并获取动态数据并在UI上呈现时,会使用更多。在这种情况下WebDriverWait是合适的。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java