2

Ad.fly に似たページのボットに取り組んでいます。リンクを開いた後、ページが読み込まれるまで 5 秒待ってから、クリックするボタンが表示されるようにします。

で実行したいです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"
}

}

良い申し込み方法を教えていただきたいです...助けていただければ幸いです:)

4

1 に答える 1

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;
于 2015-07-13T19:53:31.967 に答える