2012-06-28 6 views

Antwort

12

Wenn Sie herausfinden möchten, wie viel Zeit es dauert, eine Seite vollständig mit Selenium WebDriver (a.k.a Selenium 2) zu laden.

Normalerweise sollte WebDriver die Kontrolle nur dann auf Ihren Code zurückgeben, nachdem die Seite vollständig geladen wurde.

Also folgende Selen Java-Code könnten Ihnen helfen, die Zeit für eine Seite zu laden, zu finden -

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); 

Wenn dies nicht funktioniert, dann werden Sie warten müssen, bis ein Element auf der Seite angezeigt wird -

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

Das einzige mögliche Problem mit diesem ist, dass Sie auch die Zeit enthalten, die es dauert, die Selenium-Befehle zu senden/zu empfangen. Wenn Sie mit einem Hub im Web arbeiten, kann diese zusätzliche Latenz das Seitenladezeit-Ergebnis verzerren. – Jochen

+0

Ja, Sie haben sicherlich Recht. Das ist nicht die vollkommen richtige Antwort. Wenn wir nicht Java und Selen verwenden, könnte ein Add-On uns die richtige Zeit geben - http://www.searchenginejournal.com/best-firefox-addons-to-analyse-the-page-load-time/12419/. Bitte lassen Sie mich wissen, ob es eine Möglichkeit gibt, die Seitenladezeit mit Java-Code zu erreichen. –

+0

Wat, wenn Ajax-Aufrufe laufen und das Element auch sichtbar ist? Beispiel Website - http://www.mortgage-lender-reviews.com/reviews/amerisave-reviews.html –

-8

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

3

Sie können das StopWatch-Objekt des org.apache.commons.lang3.time-Pakets verwenden. Das Folgende ist der vollständige Code von Selenium WebDriver mit 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(); 
    } 
}