【问题标题】:Selenium: Open two different instances of ChromeDriver with same profileSelenium:使用相同的配置文件打开两个不同的 ChromeDriver 实例
【发布时间】:2017-08-04 14:14:30
【问题描述】:

我正在尝试打开两个具有相同配置文件的 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");

问题是第一个驱动程序可以正常工作并导航到 Google,但第二个驱动程序在实例化第二个驱动程序时出现以下异常:

附加信息:向远程 WebDriver 服务器发送 HTTP 请求以获取 URL http://localhost:6949/session,引发了具有空响应的异常。异常状态为 ReceiveFailure,消息为:底层连接已关闭:接收时发生意外错误。

我还从不同的二进制文件执行了每个驱动程序,但第二个也遇到了同样的问题。

问题是由用户配置文件(Chrome 选项)引起的,通过删除配置文件,一切正常。

但是,对我来说,使用相同的配置文件是强制性的。

任何指导都会有所帮助。

谢谢。

【问题讨论】:

    标签: c# selenium selenium-chromedriver


    【解决方案1】:

    这可能是因为您正在使用单个文件进行分析。

    我找到了一篇文章,您可以在其中找到复制配置文件的步骤。 按照说明在 webdriver 的第二个实例中传递配置文件的副本。

    文章链接:-

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

    希望对你有帮助:)

    【讨论】:

    • 这是个好技巧。但是我在这里有一个问题:当我使用用户名和密码登录时,我正在抓取的网站(不是谷歌)对会话和浏览器数据很敏感(登录后,没有人可以从不同的计算机登录此帐户,甚至不同浏览器,除了相同的浏览器和相同的配置文件,我在这里做什么)。将新的配置文件目录传递给第二个实例后,我使用第一个浏览器登录,刷新第二个浏览器并按照我的需要自动登录。我的问题是,如果我在第一个实例上更改 cookie 值会发生这种情况吗??(因为我有时需要这样做)
    • 太棒了。谢谢
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-12-24
    • 2018-12-28
    • 2021-11-03
    • 2016-11-19
    • 2020-11-21
    • 2019-11-06
    相关资源
    最近更新 更多