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

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

我正在使用 C#/Selenium 3 来启动和控制 Edge (Chromium) 的实例。我的要求之一是,由我的代码启动的任何 Edge 实例都应使用默认配置文件(Edge 在正常打开时使用的配置文件)。我可以通过使用 user-data-dir 参数对一个 Edge 实例执行此操作。但是,如果我尝试启动另一个实例,那么我会在新的 Web 驱动程序 window 中遇到几个错误(访问被拒绝,无法创建缓存,读取代理管道时出错:管道已结束)。我猜 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);

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

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

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