2

ページに要素が表示されるまで、ページを更新し続けたいというシナリオがあります。誰でも同じことで私を助けてもらえますか?

同じために以下のコードを使用していますが、5 秒後にページが更新されません

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

           WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
             public WebElement apply(WebDriver driver) {
               return driver.findElement(locator);
             }
           });

ありがとう

スダンス

4

3 に答える 3

5

FluentWaitクラスを使用してみてください。

   // Waiting 30 seconds for an element to be present on the page, checking
   // for its presence once every 5 seconds.
   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring(NoSuchElementException.class);

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

そのようにして、Selenium は特定の要素がロードされるまで一定時間待機します。

これで問題が解決し、ページを更新する必要がなくなることを願っています。

編集:

MrTi so friendly が指摘しているように、上記のコードはページを更新しません。特定の要素がロードされるまで、特定の期間だけ待機します。ページを更新しなくても、問題が解決するかもしれないと思っただけです。それでも問題が解決せず、ページを更新する必要がある場合はdriver.navigate().refresh()、戻る前に次のように追加する必要があります。

   // Waiting 30 seconds for an element to be present on the page, checking
   // for its presence once every 5 seconds.
   Wait<WebDriver> wait = new FluentWait<WebDriver>(driver)
       .withTimeout(30, SECONDS)
       .pollingEvery(5, SECONDS)
       .ignoring(NoSuchElementException.class);

   WebElement foo = wait.until(new Function<WebDriver, WebElement>() {
     public WebElement apply(WebDriver driver) {
       driver.navigate().refresh()
       return driver.findElement(By.id("foo"));
     }
   });
于 2013-10-26T08:23:20.317 に答える
-2

$all_loaded = true の場合 > 何かを行う > そうでない場合 > ページを更新する

于 2013-10-26T07:34:40.753 に答える