2015-12-14 33 views
2

我在寫一個硒代碼。在這裏我想獲得頁面加載時間。代碼如下。獲取網頁中的最後一個加載元素

FirefoxDriver fd = new FirefoxDriver(); 
fd.manage().timeouts().pageLoadTimeout(20, TimeUnit.SECONDS); 
long startTime = System.currentTimeMillis(); 
System.out.println("Start time is " + startTime); 
fd.get("myurl"); 
long endTime = System.currentTimeMillis(); 
System.out.println("End time is " + endTime); 
System.out.println("total time is " + (endTime - startTime) + " for i " + i); 
timeTaken += (endTime - startTime); 
fd.close(); 
System.out.println("Total tyime is " + timeTaken); 
System.out.println("Avg time is " + (timeTaken/10)); 

這裏我的問題是,我想使用一個明確的TimeWait。爲了使用它,我在教程中看到我需要獲取一些網頁元素並使用waitTill條件,但是在這裏我無法理解哪些元素最後載入,請讓我知道我該如何找到它,以便我可以獲得更多準確的結果。

謝謝

回答

1

您應該使用顯式等待要與之交互的元素。 例如,如果您在網頁上並需要單擊「提交」按鈕,則會指定顯式等待「提交」按鈕。例如:

WebDriver driver = new FirefoxDriver(); 
driver.get("http://somedomain/url_that_delays_loading"); 
WebElement myDynamicElement = (new WebDriverWait(driver, 10)) 
    .until(ExpectedConditions.presenceOfElementLocated(By.id("submitbutton"))); 

或者你可以等待元素可以點擊:

public WebElement isElementLoaded(WebElement elementToBeLoaded) { 
    WebDriverWait wait = new WebDriverWait(driver, 15); 
    WebElement element = wait.until(ExpectedConditions.elementToBeClickable(By.id(item))); 
    return element; 
} 

對於你提什麼,等待頁面上的最後一個元素被加載,這更多的隱式等待,因爲你知道更多的元素需要更長的時間來加載,並且你指定了更長的隱式加載時間。

相關問題