2014-02-23 136 views
4

我們的一些頁面在後端運行第三方分析。在我看來,硒正在等待這些過程完成,然後再進入下一步。問題是它需要大約5-6分鐘。有沒有什麼方法可以等待並進入下一步?如何讓Selenium WebDriver不要等待頁面的完整加載

我試着用JavaScript單擊按鈕(將用戶帶到具有一些後端進程的頁面),然後它就卡住了下一步。

謝謝。

+0

這就是我的問題了。沒有幾分鐘,但我的測試仍然需要很長時間。即使瀏覽器仍然可用,WebDriver將等待完整的頁面加載。我知道這對大多數情況都很有用,但就我而言,該頁面只是一個「瀏覽頁面」,會讓我感到沮喪。 – KFleischer

回答

3

在頁面加載時單擊元素甚至可以在webdriver上;默認情況下,webdriver等待整個頁面加載,然後選擇元素。鏈接和文本可見,但不可點擊;但是,在頁面加載時,它在Selenium IDE拾取元素上運行良好。

Webdriver利用FirefoxProfile來避免此類風險;它僅適用於Firefox瀏覽器。

FirefoxProfile fp = new FirefoxProfile(); 
fp.setPreference("webdriver.load.strategy", "unstable"); 
driver = new FirefoxDriver(fp); 
0

我建議你可以使用代理。 Browsermob與硒結合的很好,非常容易使用它:

// start the proxy 
ProxyServer server = new ProxyServer(4444); 
server.start(); 

// get the Selenium proxy object 
Proxy proxy = server.seleniumProxy(); 

// This line will automatically return http.200 for any request going to google analytics 
server.blacklistRequests("https?://.*\\.google-analytics\\.com/.*", 200); 

// configure it as a desired capability 
DesiredCapabilities capabilities = new DesiredCapabilities(); 
capabilities.setCapability(CapabilityType.PROXY, proxy); 

// start the browser up 
WebDriver driver = new FirefoxDriver(capabilities); 

編輯: 我剛剛發現,在selenium 2.40的pageLoading戰略得以實施。

  • 在Firefox中實現pageLoadingStrategy功能。
partial interface WebDriver { 
    const DOMString CONSERVATIVE = 'conservative'; 
    const DOMString NORMAL = 'normal'; 
    const DOMString EAGER = 'eager'; 
    const DOMString NONE = 'none'; 
}; 

reference

+0

您能解釋一下如何使用新的pageLoadStrategy功能以及它如何影響硒的使用? – KFleischer

+0

[檢查已執行的測試](https://github.com/SeleniumHQ/selenium/blob/master/java/client/test/org/openqa/selenium/PageLoadingTest.java) –

相關問題