2015-07-13 5 views
2

Я работаю над ботом для страницы, похожей на Ad.fly. После открытия ссылки, я хочу подождать пять секунд, чтобы страница загрузилась до появления кнопки для щелчка.Как я могу подождать загрузку страницы с помощью selenium htmlunitDriver?

Я хочу выполнить это с помощью 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

На самом деле, 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; 
+0

Я попробую с туром Conde спасибо за быстрый ответ. Если это сработает, я вернусь и утвержу. –

+0

Dude Я копирую и вставляю код, и я получаю ошибку с этими строками: –

+0

WebElement el = wait.until (new Function() { public WebElement apply (драйвер WebDriver) { return driver.findElement (By.id ("skip_btn")); } }); el.click(); –

Смежные вопросы