2017-08-04 65 views
0

我試圖打開兩個實例ChromeDriver具有相同配置文件如下:硒:ChromeDriver具有相同的配置文件打開兩個不同的實例

ChromeDriverService service1 = ChromeDriverService.CreateDefaultService(); 
ChromeOptions options1 = new ChromeOptions(); 
options1.AddArguments($"user-data-dir=C:/Users/{Environment.UserName}/AppData/Local/Google/Chrome/User Data/Default"); 
service1.HideCommandPromptWindow = true; 
ChromeDriver driver1 = new ChromeDriver(service1, options1); 
driver1.Navigate().GoToUrl("https://www.google.com"); 

ChromeDriverService service2 = ChromeDriverService.CreateDefaultService(); 
ChromeOptions options2 = new ChromeOptions(); 
options2.AddArguments($"user-data-dir=C:/Users/{Environment.UserName}/AppData/Local/Google/Chrome/User Data/Default"); 
service2.HideCommandPromptWindow = true; 
ChromeDriver driver2 = new ChromeDriver(service2, options2); 
driver2.Navigate().GoToUrl("https://www.google.com"); 

的問題是,第一驅動作品並導航到谷歌,但在秒實例化第二個驅動程序時,出現以下異常:

附加信息:引發了一個空響應異常,它向遠程WebDriver服務器發送HTTP請求,URL爲http://localhost:6949/session。異常的狀態是ReceiveFailure,消息是:底層連接已關閉:接收時發生意外錯誤。

我還從執行不同的二進制文件的每個驅動程序,但得到了與第二個同樣的問題。

問題是由用戶配置文件(瀏覽器選項),並通過移除個人資料造成的,一切工作正常。

但是,對我來說,使用相同的配置是強制性的。

任何指導會有所幫助。

謝謝。

回答

1

這可能是因爲您使用的分析單個文件發生。

我發現了一篇文章,你可以找到步驟複製一個輪廓。 按照說明操作並在webdriver的第二個實例中傳遞配置文件的副本。

文章鏈接: -

https://support.4it.com.au/article/copy-google-chrome-profile-new-user-profile-windows/

希望它會幫助你:)

+0

這是一個很好的伎倆。但我在這裏有一個問題:當我用用戶名和密碼登錄時,我爬行的網站(不是谷歌)對會話和瀏覽器數據很敏感(登錄後,沒有人可以從不同的計算機登錄此帳戶,甚至不同瀏覽器,除了相同的瀏覽器和相同的配置文件,我在這裏做的)。在將新配置文件dir傳遞給第二個實例之後,我使用第一個瀏覽器登錄,刷新第二個瀏覽器並按照我的意願自動登錄。我的問題是,如果我改變第一個實例的cookie值會發生這種情況(因爲我有時需要這樣做) – Efe

+0

無論如何,這對我有效。謝謝 – Efe

+0

令人驚歎。謝謝 –

相關問題