2012-07-12 146 views
11

我正在使用python api將一些Selenium RC測試轉換爲Selenium WebDriver。在Selenium WebDriver中,我注意到driver.get('http://...')似乎在繼續之前等待整個頁面加載。有沒有辦法不等待頁面加載?我請求的某些頁面有很多外部資源可能需要很長時間才能加載。我寧願等待DOM上的元素出現,而不是等待所有的東西加載。正因爲如此,我的一些測試似乎在WebDriver中花費了兩倍的時間。Selenium WebDriver在不等待頁面加載的情況下轉到頁面

+1

@Slanec你們倆都很棒。我的艱苦搜索已經達成了一個幸福的結論。 – 2012-11-19 23:58:24

回答

13

是的,沒有。硒2.24.1,the support for this is only in Firefox - you have to run it in a special "mode"的:

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

你甚至可以設置the timeout if you want to。這種方法在除Firefox之外的任何瀏覽器中都失敗,並且在沒有不穩定策略的情況下在火狐瀏覽器中不做任何事情:

driver.manage().timeouts().pageLoadTimeout(5, TimeUnit.SECONDS); 
+1

謝謝。完全回答了我的問題。 – Jackson 2012-07-13 14:16:18

+0

此外,當您在預期頁面上輪詢對象時,如果使用findElements()而不是findElement(),則可以通過使用類似'if findElements()= 0 keep trying'的內容來避免空指針。 – djangofan 2013-02-04 23:32:34

+0

什麼是頁面加載超時的Python等效代碼? – 2015-08-28 11:37:28

相關問題