如何使用selenium htmlunitDriver等待页面加载?

时间:2015-07-13 19:06:47

标签: java selenium-webdriver htmlunit-driver

我正在为类似于Ad.fly的网页开发机器人。打开链接后,我想等待五秒钟才能加载页面,然后才能显示单击按钮。

我想用HtmlunitDriver执行此操作。我尝试了隐式等待和显式等待,但这没有用。有人告诉我使用FluentWait,但我不知道如何实现它。

以下是我的实际代码,是否有人可以帮助我了解如何实施FluentWait

public class bot {

public static WebDriver driver;
public static void main(String[] args) {
     driver = HtmlUnitDriver();
     driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
     driver.get("http://bc.vc/xHdGKN");
     // HERE I HAVE TO USE FLUENT WAIT, SOMEBODY MAY EXPLAIN TO ME?
     driver.findElement(By.id("skip_btn")).click(); // element what i have to do click when the page load 5 seconds "skip ads button"
}

}

我想申请一个好的方法...如果你帮助,我将不胜感激:)

1 个答案:

答案 0 :(得分:1)

实际上,FluentWait更适合等待范围很广的情况,比如说在1到10秒之间。例如:

Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
        .withTimeout(10, TimeUnit.SECONDS)
        .pollingEvery(1, TimeUnit.SECONDS)
        .ignoring(NoSuchElementException.class);

WebElement el = wait.until(new Function<WebDriver, WebElement>() {
    public WebElement apply(WebDriver driver) {
        return driver.findElement(By.id("skip_btn"));
    }
});

el.click();

可以肯定的是,这些是您需要的导入语句:

import com.google.common.base.Function;
import org.openqa.selenium.By;
import org.openqa.selenium.NoSuchElementException;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.support.ui.FluentWait;
import org.openqa.selenium.support.ui.Wait;
import java.util.concurrent.TimeUnit;