2012-06-28 13 views

Respuesta

12

Si está tratando de averiguar cuánto tiempo le lleva cargar completamente una página usando Selenium WebDriver (a.k.a Selenium 2).

Normalmente WebDriver debe devolver el control a su código solo después de que la página se haya cargado por completo.

Así que el siguiente código de selenio Java podría ayudarle a encontrar el tiempo para una carga de la página -

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

Si esto no funciona, entonces tendrá que esperar hasta que se muestre algún elemento de la página -

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

El único problema posible con esto es que también incluye el tiempo que lleva enviar/recibir los comandos de Selenium. Si trabaja con un concentrador en la web, esta latencia agregada puede sesgar el resultado del tiempo de carga de la página. – Jochen

+0

sí, ciertamente tienes razón. Esta no es la respuesta completamente correcta. Si no usamos java y selenio, un complemento podría darnos la hora correcta - http://www.searchenginejournal.com/best-firefox-addons-to-analyze-the-page-load-time/12419/. Por favor, avíseme si hay alguna manera de lograr el tiempo de carga de la página usando el código de java. –

+0

Wat si las llamadas Ajax están en marcha y el elemento es/son visibles también? Ejemplo de sitio web - http://www.mortgage-lender-reviews.com/reviews/amerisave-reviews.html –

-8

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

3

Puede usar el objeto StopWatch del paquete org.apache.commons.lang3.time. El siguiente es el código completo de Selenium WebDriver con 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(); 
    } 
} 
Cuestiones relacionadas