2012-06-28 28 views
6

我们如何获得准确的时间使用Selenium WebDriver加载页面?我们如何准确地使用Selenium WebDriver加载页面?

我们使用了Thread.sleep

我们使用implicitlyWait

我们使用WebDriverWait

,但我们怎样才能得到确切的时间来加载使用Selenium webdriver的页面?

+0

您想使用哪种编程语言? –

+0

使用导航计时API –

回答

12

如果您试图找出使用Selenium WebDriver(a.k.a Selenium 2)完全加载页面需要多长时间。

通常情况下,WebDriver只有在页面完全加载后才能将控制权返回给您的代码。

所以下面硒的Java代码可能会帮助你找到一个页面加载的时间 -

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

如果不工作,那么你将不得不等待,直到某些元素显示在页面上 -

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

唯一可能的问题是,您还包括发送/接收Selenium命令所需的时间。如果您在网络上使用集线器,则此增加的延迟可能会扭曲页面加载时间结果。 – Jochen

+0

是的,你肯定是对的。这不是完全正确的答案。如果我们不使用java和selenium,添加可能会给我们正确的时间 - http://www.searchenginejournal.com/best-firefox-addons-to-analyze-the-page-load-time/12419/。请让我知道是否有任何方法使用Java代码实现页面加载时间。 –

+0

Wat如果Ajax调用正在进行并且元素也可以看到? 示例网站 - http://www.mortgage-lender-reviews.com/reviews/amerisave-reviews.html –

-8

driver.manage()。timeouts()。pageLoadTimeout(60,TimeUnit.SECONDS);

3

您可以使用org.apache.commons.lang3.time包的StopWatch对象。以下是使用Java的Selenium WebDriver的完整代码:

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(); 
    } 
} 
相关问题