Warm tip: This article is reproduced from serverfault.com, please click

c#-Selenium 使用当前配置文件启动 Edge (Chromium) 的新实例

(c# - Selenium Launch a new instance of Edge (Chromium) using the current Profile)

发布于 2021-06-06 23:16:04

我正在使用 C#/Selenium 3 来启动和控制 Edge (Chromium) 的实例。我的要求之一是我的代码启动的任何 Edge 实例都应使用默认配置文件(如果你正常打开 Edge 则使用该配置文件)。我可以使用 user-data-dir 参数对 Edge 的一个实例执行此操作。但是,如果我尝试启动另一个实例,则会在新的 Web 驱动程序窗口中出现几个错误(访问被拒绝、无法创建缓存、读取代理管道时出错:管道已结束)。我猜 user-data-dir 正在被第一个实例使用。我是否需要以某种方式创建配置文件的副本?

EdgeDriverService edgeDriverService = EdgeDriverService.CreateChromiumService(webDriverPath);
edgeDriverService.HideCommandPromptWindow = !debug;

EdgeOptions edgeOptions = new ()
{
    UseChromium = true
};

edgeOptions.AddArgument("profile-directory=Default");
edgeOptions.AddArgument(@"user-data-dir=C:\Users\xxxxxx\AppData\Local\Microsoft\Edge\User Data");

this._webDriver = new EdgeDriver(edgeDriverService, edgeOptions);
Questioner
making
Viewed
0
Yu Zhou 2021-06-08 15:35:39

你遇到了问题,因为user-data-dir为两个实例配置了相同的路径。用户数据目录将被第一个实例锁定,第二个实例将失败并出现异常,因为该目录正在使用中。你应该避免同时启动 Edge WebDriver 实例user-data-dir

如果你不再需要第一个 Edge WebDriver 实例,你可以使用 关闭它,然后你可以使用相同的路径driver.Quit()启动第二个实例。user-data-dir请记住,最好在使用完 WebDriver 实例后关闭它。

如果还需要使用第一个实例,同时又想启动第二个实例,可以创建user-data-diras User Data1、User Data2、User Data3等的副本,然后可以user-data-dir为不同的Edge WebDriver实例使用不同的路径. 更详细的信息可以参考这个答案