2013-10-30 76 views
0

我有一個場景,我想繼續刷新頁面,直到某些元素出現在頁面中。任何人都可以請幫助我一樣嗎?繼續刷新頁面直到出現某個元素?

我使用了相同下面的代碼,但網頁不刷新後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); 
      } 
      }); 

感謝

Sudhansu

回答

-2

如果$ all_loaded = TRUE>做點什麼>其它>刷新頁面

1

嘗試使用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那麼友好指出,上面的代碼不會刷新頁面。它只會等待一段時間,直到某些元素已經被加載。我只是認爲它可以解決問題,而不必刷新頁面。如果不解決你的問題,你仍然需要刷新頁面,則需要回歸前增加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")); 
    } 
    }); 
+0

Emil,這段代碼不會刷新頁面。您可能想要在返回之前插入'driver.navigate()。refresh()'。 –

+0

謝謝@MrTi我已經用你的建議更新了我的答案。我希望這將解決你的問題mfsi_SudhansuPanda。 –

0

謝謝EmilC對你的建議。

以下面的方式使用java lambda的語法聲明函數也是可行的。

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

    wait.until((webDriver) -> { 
     webDriver.navigate().refresh(); 
     return driver.findElement(by); 
    }); 
相關問題