使selenium驱动程序等待,无需任何操作,持续x秒

时间:2017-01-07 20:55:47

标签: java selenium

如何让Java中的selenium驱动程序暂时等待几秒钟,只是为了暂停驱动程序?

4 个答案:

答案 0 :(得分:2)

只需Thread.sleep(1000)逗留1秒钟。

答案 1 :(得分:1)

使用selenium有不同的等待方式:

  • Explicit Waits:等待某个条件发生,然后再继续执行代码
    WebDriver driver = new FirefoxDriver();
    driver.get("http://somedomain/url_that_delays_loading");
    WebElement myDynamicElement = (new WebDriverWait(driver, 10)).until(ExpectedConditions.presenceOfElementLocated(By.id("myDynamicElement")));

在抛出TimeoutException之前等待最多10秒,或者如果它发现元素将在0-10秒内返回

  • Implicit waits:隐式等待是告诉WebDriver在尝试查找一个或多个元素时,如果它们不能立即可用,则会在一定时间内轮询DOM。

    WebDriver driver = new FirefoxDriver();
    driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
    driver.get("http://somedomain/url_that_delays_loading");
    WebElement myDynamicElement = driver.findElement(By.id("myDynamicElement"));

你也可以使用Thread.sleep(),不建议这样做但如果你只是调试这是最简单的方法。

您可以查看Selenium documentation以更好地了解如何使用等待。

答案 2 :(得分:0)

 try {
                    Thread.sleep(4000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

似乎可以做到这一点。

答案 3 :(得分:0)

fun WebDriver.delay(timeout: Duration) {
    val until = System.currentTimeMillis() + timeout.toMillis()

    WebDriverWait(this, timeout).until {
        return@until until <= System.currentTimeMillis()
    }
}

这是 kotlin 扩展代码。通常的方法是这样的:

fun delay(driver: WebDriver, timeout: Duration) {
    val until = System.currentTimeMillis() + timeout.toMillis()

    WebDriverWait(driver, timeout).until {
        return@until until <= System.currentTimeMillis()
    }
}