2012-06-28 13 views

risposta

12

Se si sta cercando di scoprire quanto tempo ci vuole per caricare completamente una pagina utilizzando Selenium WebDriver (a.k.a Selenium 2).

Normalmente WebDriver deve restituire il controllo al codice solo dopo che la pagina è stata caricata completamente.

Così il seguente codice Selenio Java si potrebbe aiutare a trovare il tempo per una pagina di carico -

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

Se questo non funziona allora si dovrà aspettare fino a qualche elemento viene visualizzato nella pagina -

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

L'unico problema possibile è che si include anche il tempo necessario per inviare/ricevere i comandi Selenium. Se si lavora con un hub sul Web, questa latenza aggiunta potrebbe alterare il risultato del tempo di ricarica. – Jochen

+0

sì, hai sicuramente ragione. Questa non è la risposta completamente corretta. Se non stiamo usando java e selenio, un'aggiunta potrebbe darci il tempo giusto - http://www.searchenginejournal.com/best-firefox-addons-to-analyze-the-page-load-time/12419/. Per favore fatemi sapere se c'è un modo per raggiungere il tempo di caricamento della pagina usando il codice java. –

+0

Wat se le chiamate Ajax sono in corso e anche l'elemento è/è visibile? Esempio di sito web - http://www.mortgage-lender-reviews.com/reviews/amerisave-reviews.html –

-8

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

3

È possibile utilizzare l'oggetto StopWatch del pacchetto org.apache.commons.lang3.time. Quanto segue è il codice completo di Selenium WebDriver che utilizza 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(); 
    } 
} 
Problemi correlati