2012-05-02 68 views
3

如何等待driver.get(),因爲我們使用.get()訪問的URL是不知道的。並可能需要未知的時間,所以我們必須給予30秒的潛水時間,然後如何給它。如何在java中使用selenium顯式給driver.get()使用java

下面是它的代碼..

package org.openqa.selenium.example; 

import java.util.List; 

import org.openqa.selenium.By 

import org.openqa.selenium.WebDriver; 

import org.openqa.selenium.WebElement; 

import org.openqa.selenium.firefox.FirefoxDriver; 


public class MyClass{ 

    public static void main(String[] args) throws Exception { 

     // The Firefox driver supports javascript 

     WebDriver driver = new HtmlUnitDriver(); 

     // Go to the some websites 

     driver.get("http://www.abced.com/123456/asd.htm"); 

     /*** Here we DONT get back the driver, so we need to Give Time out of 30 seconds**/ 

     final List<WebElement> element1= driver.findElements(By.tagName("a")); 

    for (WebElement webElement : element1) { 

     String urlFromPage = webElement.getAttribute("href"); 

       System.out.println(urlFromPage); 

     } 


    } 

} 

我試圖

driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS); 
driver.get(thisPage.url); 

它不工作.. PLZ建議, TX

回答

4

如果你想等待要加載的頁面,您應該使用pageLoadTimeout(long time, java.util.concurrent.TimeUnit unit)方法。 implicitlyWait(long time, java.util.concurrent.TimeUnit unit)用於等待尚未出現的元素,而不是等待頁面加載。

在您的WebDriver實例上,您應該調用與implicitlyWait()一致的類似方法鏈。這將調用,依次是:

  • manage() - 駕駛員管理界面
  • options() - 驅動程序選項界面
  • timeouts() - 超時選項界面
  • pageLoadTimeout(...) - 設置超時到你想要的時間

你可以找到相關的javadoc here

+0

感謝您的快速回復。我不知道如何使用它..所以,請你告訴我,如何使用pageLoadTimeout()與驅動程序..我使用硒16.0 – Amit

+0

編輯一點點細節。如果您需要更多幫助,請編輯您的問題,使其更清楚您正在嘗試做什麼。 – Feanor

+1

我試過了,但是當我正在執行程序,然後Iam得到異常:「java.lang.UnsupportedOperationException:pageLoadTimeout SO,我無法在此工作.. – Amit

0

相反,您可以使用WebDriverWait來指定一個條件來檢查和最大超時。

WebDriverWait _wait = new WebDriverWait(driver, new TimeSpan(0, 0, 2)); //waits 2 secs max 
_wait.Until(d => d.FindElement(By.Id("name"))); 

我已經發布了類似的答案this問題:這可以如下使用。

相關問題