2012-06-28 20 views
6

Làm cách nào để chúng tôi có thời gian tải trang bằng Selenium WebDriver?Làm thế nào chúng ta có thể có được thời gian chính xác để tải một trang bằng cách sử dụng Selenium WebDriver?

Chúng tôi sử dụng Thread.sleep

Chúng tôi sử dụng implicitlyWait

chúng tôi sử dụng WebDriverWait

nhưng thế nào chúng ta có thể nhận được chính xác thời gian để tải một trang sử dụng Selenium WebDriver?

+0

Ngôn ngữ lập trình nào bạn muốn sử dụng? –

+0

sử dụng thời gian điều hướng api –

Trả lời

12

Nếu bạn đang cố gắng tìm hiểu xem phải mất bao nhiêu thời gian để tải trang hoàn toàn bằng Selenium WebDriver (a.k.a Selenium 2).

Thông thường WebDriver sẽ chỉ trả lại quyền kiểm soát cho mã của bạn sau khi trang đã tải hoàn toàn.

Vì vậy, mã Selenium Java sau đây có thể giúp bạn tìm ra thời gian cho một tải trang -

long start = System.currentTimeMillis(); 

driver.get("Some url"); 

long finish = System.currentTimeMillis(); 
long totalTime = finish - start; 
System.out.println("Total Time for page load - "+totalTime); 

Nếu điều này không làm việc thì bạn sẽ phải chờ cho đến khi một số yếu tố sẽ được hiển thị trên trang -

long start = System.currentTimeMillis(); 

driver.get("Some url"); 

WebElement ele = driver.findElement(By.id("ID of some element on the page which will load")); 
long finish = System.currentTimeMillis(); 
long totalTime = finish - start; 
System.out.println("Total Time for page load - "+totalTime); 
+0

Vấn đề duy nhất có thể xảy ra với điều này là bạn cũng bao gồm thời gian cần để gửi/nhận lệnh Selenium. Nếu bạn làm việc với một trung tâm trên web, độ trễ được thêm vào này có thể làm giảm kết quả thời gian tải trang. – Jochen

+0

có bạn chắc chắn đúng. Đây không phải là câu trả lời hoàn toàn chính xác. Nếu chúng ta không sử dụng java và selen, một add on có thể cho chúng ta thời gian chính xác - http://www.searchenginejournal.com/best-firefox-addons-to-analyze-the-page-load-time/12419/. Vui lòng cho tôi biết nếu có bất kỳ cách nào để đạt được thời gian tải trang bằng cách sử dụng mã java. –

+0

Wat nếu các cuộc gọi Ajax đang diễn ra và phần tử được/cũng hiển thị? Trang web ví dụ - http://www.mortgage-lender-reviews.com/reviews/amerisave-reviews.html –

-8

driver.manage(). Timeouts(). PageLoadTimeout (60, TimeUnit.SECONDS);

3

Bạn có thể sử dụng đối tượng StopWatch của gói org.apache.commons.lang3.time. Sau đây là mã hoàn chỉnh của Selenium WebDriver sử dụng Java:

import org.apache.commons.lang3.time.StopWatch; 
import org.openqa.selenium.By; 
import org.openqa.selenium.WebDriver; 
import org.openqa.selenium.firefox.FirefoxDriver; 
import org.openqa.selenium.support.ui.ExpectedConditions; 
import org.openqa.selenium.support.ui.WebDriverWait; 

public class TimerInSeleniumWebDriver { 
    public static void main(String[] args) { 
     WebDriver driver; 
     driver = new FirefoxDriver();  
     StopWatch pageLoad = new StopWatch(); 
     pageLoad.start(); 
     //Open your web app (In my case, I opened facebook) 
     driver.get("https://www.facebook.com/"); 
     // Wait for the required any element (I am waiting for Login button in fb) 
     WebDriverWait wait = new WebDriverWait(driver, 10); 
     wait.until(ExpectedConditions.presenceOfElementLocated(By.id("u_0_l"))); 

     pageLoad.stop(); 
     //Get the time 
     long pageLoadTime_ms = pageLoad.getTime(); 
     long pageLoadTime_Seconds = pageLoadTime_ms/1000; 
     System.out.println("Total Page Load Time: " + pageLoadTime_ms + " milliseconds"); 
     System.out.println("Total Page Load Time: " + pageLoadTime_Seconds + " seconds"); 
     driver.close(); 
    } 
}