2017-04-02 109 views
6

通常我越來越沒有這樣的會話錯誤,當我從詹金斯運行腳本沒有這樣的會話錯誤。這是什麼原因?是否有任何連接失敗或是由於其他原因(我正在運行大約26個腳本,並且至少有一個腳本沒有此類會話錯誤)硒ChromeDriver

腳本是不同的腳本,並且不會再次重複這種會話錯誤對於相同的腳本

+0

你能用更多的信息來完成你的問題嗎?你使用什麼瀏覽器和Selenium版本?你在對抗Selenium Grid嗎?如果是這樣,你已經設置了多少個節點? – Tom

+0

我使用Chrome和ChromeDriver與最新版本的硒,但仍然問題存在 – Shan

+0

您可以檢查經過長時間的討論[在鉻(https://bugs.chromium.org/p/chromedriver/issues/detail?id = 732)。我也很頭痛。我將Selenium3與Docker鏡像配合使用,無法爲其提供穩定的行爲。 – Tom

回答

4

我有時會遇到這種情況。我使用ChromeDriver和Laravel Dusk,而不是Selenium。不過,我相信原因是ChromeDriver,沒有硒

ChromeDriver將創建文件夾一些緩存文件:C:\Users\(yourAccountName)\AppData\Local\Temp。在此文件夾中,您將看到許多看起來像scoped_dir1234_5678的緩存文件夾。每個文件夾大約佔用10MB。如果Jenkins頻繁運行ChromeDriver,則ChromeDriver可能會過度填充臨時文件夾中的緩存文件。您應該考慮C盤上的30-50GB緩存文件,並充分利用C驅動程序。

當我的C盤空間不足時,ChromeDriver將無法啓動,然後返回錯誤消息「Facebook \ WebDriver \ Exception \ NoSuchDriverException:no such session」。

解決辦法:

  1. 到臨時文件夾,刪除所有ChromeDriver緩存文件夾可以清理C區。
  2. 創建可以刪除/清理ChromeDriver的Cache文件夾的腳本。

--UPDATE--

找到另一種情況引起的問題。

如果您在同一個OS上同時運行相同的腳本以在兩個不同的實例中啓動ChromeDriver,則當一個實例完成並關閉了chromedriver時,另一個chrome瀏覽器實例也可能會關閉。

比如你打開兩個控制檯和EXCUTE chromedriver scrpit,或在同一時間,你詹金斯項目啓動。

我相信,即使您運行不同的腳本,但需要在同一時間chromedriver。由於Chrome瀏覽器實例關閉,其中一個腳本將「沒有這樣的會話」。

解決方案:

  1. 安裝在詹金斯
  2. 成立了項目在構建攔截器,其目標項目需要等待,直到它完成構建攔截。

我的情況是使用Laravel黃昏無硒。我不確定當測試通過硒服務器時是否會有所不同。