Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Selenium使用当前配置文件启动Edge(Chromium)的新实例_C#_Selenium_Microsoft Edge - Fatal编程技术网

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

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

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

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);

出现此问题是因为为两个实例配置了相同的
用户数据目录
路径。用户数据目录将被第一个实例锁定,当目录正在使用时,第二个实例将异常失败。应避免同时使用相同的
用户数据目录启动Edge WebDriver实例

如果不再需要第一个Edge WebDriver实例,可以使用
driver.Quit()
关闭它,然后可以使用相同的
用户数据目录
路径启动第二个实例。请记住,在使用完WebDriver实例后关闭它是一种很好的做法

如果您仍然需要使用第一个实例,并且希望同时启动第二个实例,则可以将
用户数据目录
的副本创建为用户数据1、用户数据2、用户数据3等。然后,您可以为不同的Edge WebDriver实例使用不同的
用户数据目录
路径。有关更多详细信息,请参阅