2013-04-10 58 views
3

我在java中運行一組400個selenium2腳本(webdriver備份)。在「鉻錯誤與遠程瀏覽器通信」錯誤後跳過硒webdriver腳本鉻

當我在使用網格註冊的節點上運行腳本時,有時會出現錯誤。發生此錯誤的腳本已關閉並且其他腳本開始運行後,由於caused by null error會跳過大約10-20個腳本。

此外,一次只能運行一個瀏覽器實例。 我正在使用Chrome瀏覽器。

當過我得到Error communicating with the remote browser錯誤時,caused by null錯誤。

我試圖擺脫由this solution提供的第一個錯誤。但是我仍然得到了這兩個錯誤。

任何幫助?

編輯另外,當我一次運行一個腳本時,所有腳本都可以正常工作。

+0

什麼版本的硒?什麼版本的Chrome?什麼版本的Chrome驅動程序? – Arran 2013-04-10 09:43:40

+0

@Arran:我使用selenium-server-standalone-2.31.0.jar chrome 26.0.1410.43 m和chromedriver_win_26.0.1383.0。 – 2013-04-10 10:59:06

回答

0

當Webdriver實例仍處於活動狀態並且瀏覽器意外關閉時,通常會發生這種情況。

請提供更多的細節,如,

  1. 你按順序或並行運行的腳本。
  2. 您是否在每個測試方法之前調用Webdriver實例並在每種方法之後關閉?
  3. 您正在使用哪種測試框架。
  4. 測試方法之間是否存在任何依賴關係?

根據您的解決方案從How to close a ChromeDriver when running on Grid?,因爲你是在@Aftersuite關閉webdriver的實例後,所有的測試方法執行完畢並沒有聽起來不錯。如果瀏覽器在特定的測試方法出乎意料地被關閉,那麼其他方法也會失敗,因爲瀏覽器無法運行。這就是爲什麼你會得到null異常。

我的建議是在每個測試方法之前和之後調用並關閉webdriver實例。 一樣,

@BeforeMethod 
public void setUp(){ 
WebDriver driver = new ChromeDriver(); 
} 

,並關閉它,

@AfterMethod 
public void tearDown(){ 
driver.quit(); 
} 

這樣,如果任何理由瀏覽器被意外關閉只有特定的測試將會失敗不是所有的休息。

+0

我正在按順序運行腳本。我也調用一個新的webdriver實例,並在每次測試後關閉。 我正在使用testNG框架。 首先調用setup()方法,然後調用test()方法,最後調用tearDown()方法。 我遵循上面描述的相同方法。 – 2013-04-10 11:44:18