我正在使用 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);
你遇到了问题,因为user-data-dir
为两个实例配置了相同的路径。用户数据目录将被第一个实例锁定,第二个实例将失败并出现异常,因为该目录正在使用中。你应该避免同时启动 Edge WebDriver 实例user-data-dir
。
如果你不再需要第一个 Edge WebDriver 实例,你可以使用 关闭它,然后你可以使用相同的路径driver.Quit()
启动第二个实例。user-data-dir
请记住,最好在使用完 WebDriver 实例后关闭它。
如果还需要使用第一个实例,同时又想启动第二个实例,可以创建user-data-dir
as User Data1、User Data2、User Data3等的副本,然后可以user-data-dir
为不同的Edge WebDriver实例使用不同的路径. 更详细的信息可以参考这个答案。