2013-04-05 443 views
4

我的硒webdriver進入一個頁面,並等待該頁面完成加載。如果30秒傳遞超時並且腳本失敗。從selenium webdriver停止瀏覽器加載

有沒有辦法讓webdriver在30秒後停止頁面加載(如在瀏覽器中按'x')?這將防止我的司機超時。

我正在使用Chromedriver。

+0

我的經驗表明,webdriver真的會等待整個頁面完成加載。我正在測試需要相當長時間才能加載的Web應用程序,但webdriver正常工作!另外,我也包含了一個隱含的等待。例如:'driver.manage()。timeouts()。implicitlyWait(20,TimeUnit.SECONDS);' – 2013-04-05 13:44:39

+0

另外,如果你阻止網頁完全加載,它**可能會破壞你的測試腳本。 – 2013-04-05 13:46:02

+0

你看過window.stop()使用javascript – StaleElementException 2013-04-05 15:52:04

回答

3

這是我遇到這個問題的方式。我將使用這種方式,直到Chrome支持pageload

我在chrome中安裝了名爲Stop load的擴展,並設置了5秒的停止加載。

然後,我開始我的默認設置驅動器 -

DesiredCapabilities capabilities = DesiredCapabilities.chrome(); 
capabilities.setCapability("chrome.switches", Arrays.asList("--user-data-dir="+System.getProperty("user.home")+"\\AppData\\Local\\Google\\Chrome\\User Data")); 
System.setProperty("webdriver.chrome.driver", "C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe"); 
driver = new ChromeDriver(capabilities); 

如果Chrome的頁面並不在5秒鐘加載,你的擴展將在5秒內殺死它照顧它。

在它就像一個implicitwait如果您在擴展設置適當的停止加載時間

1

嘗試使用這樣的:

driver.manage().timeouts().pageLoadTimeout(); 

文檔:
Page Load Timeout

此外,作爲小費,你不能訪問使用硒的webdriver瀏覽器的原生控制。如果你想這樣做,如果你正在使用Linux或AutoIt for windows,請使用如Sikuli這樣的工具。

0

可以在紅寶石使用的JavaScript功能window.stop()和方法Selenium::WebDriver::Driver#execute_script停止頁面加載的方式:

driver.execute_script("window.stop()") 
+0

當你進入界面的時候,你不再需要這個調用了。硒API是一個阻塞競爭條件混亂。 更重要的是,即使page_load超時也不會救你,而只是簡單地改變問題。如果您訪問超時後加載的頁面已將控制權還給您,您將停止加載。 – Slotos 2013-11-17 13:01:33

相關問題