我們的一些頁面在後端運行第三方分析。在我看來,硒正在等待這些過程完成,然後再進入下一步。問題是它需要大約5-6分鐘。有沒有什麼方法可以等待並進入下一步?如何讓Selenium WebDriver不要等待頁面的完整加載
我試着用JavaScript單擊按鈕(將用戶帶到具有一些後端進程的頁面),然後它就卡住了下一步。
謝謝。
我們的一些頁面在後端運行第三方分析。在我看來,硒正在等待這些過程完成,然後再進入下一步。問題是它需要大約5-6分鐘。有沒有什麼方法可以等待並進入下一步?如何讓Selenium WebDriver不要等待頁面的完整加載
我試着用JavaScript單擊按鈕(將用戶帶到具有一些後端進程的頁面),然後它就卡住了下一步。
謝謝。
在頁面加載時單擊元素甚至可以在webdriver上;默認情況下,webdriver等待整個頁面加載,然後選擇元素。鏈接和文本可見,但不可點擊;但是,在頁面加載時,它在Selenium IDE拾取元素上運行良好。
Webdriver利用FirefoxProfile來避免此類風險;它僅適用於Firefox瀏覽器。
FirefoxProfile fp = new FirefoxProfile();
fp.setPreference("webdriver.load.strategy", "unstable");
driver = new FirefoxDriver(fp);
我建議你可以使用代理。 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';
};
您能解釋一下如何使用新的pageLoadStrategy功能以及它如何影響硒的使用? – KFleischer
[檢查已執行的測試](https://github.com/SeleniumHQ/selenium/blob/master/java/client/test/org/openqa/selenium/PageLoadingTest.java) –
這就是我的問題了。沒有幾分鐘,但我的測試仍然需要很長時間。即使瀏覽器仍然可用,WebDriver將等待完整的頁面加載。我知道這對大多數情況都很有用,但就我而言,該頁面只是一個「瀏覽頁面」,會讓我感到沮喪。 – KFleischer