我正在尝试使用 Edge 浏览器在 C# 中启动一个简单的 selenium 测试,但我不能。指示我的错误如下:
OpenQA.Selenium.DriverServiceNotFoundException:'文件 C:\Selenium\Drivers\MicrosoftWebDriver.exe 不存在。驱动程序可以在 http://go.microsoft.com/fwlink/?LinkId=619687
下载这是给我错误的代码行:
driver = new EdgeDriver ("C:\\Selenium\\Drivers");
在路径 C:\Selenium\Drivers 中我有以下驱动程序:msedgedriver.exe
从页面下载:https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
该驱动程序与我的 Edge 版本相对应:Microsoft Edge 是最新的。 版本80.0.361.62(官方编译)(64位)
我做错了什么?我的错误是什么? 怎么解决呢?
在撰写本文时,nuget 包
Selenium.WebDriver.MSEdgeDriver
下载的 Edgedriver 是 msedgedriver.exe
,但 EdgeDriver(...)
构造函数正在寻找 MicrosoftWebDriver.exe
。
我发现你可以像这样指定exe的名称:
IWebDriver driver = new EdgeDriver(
EdgeDriverService.CreateDefaultService(".", "msedgedriver.exe"));
希望这对您有用。
driver = new EdgeDriver ("C:\\Selenium\\Drivers\\msedgedriver.exe");
请从路径中删除不必要的空格,并将 .exe 文件包含在路径中
您使用的硒版本是什么?如果您使用的是 Selenium 4.00-alpha03 及更早版本,您可以参考以下步骤来自动化 Microsoft Edge Chromium:
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Remote;
using System.Collections.Generic;
using System.Threading;
var service = EdgeDriverService.CreateDefaultService(@"C:\Selenium\Drivers", @"msedgedriver.exe");
service.UseVerboseLogging = true;
service.UseSpecCompliantProtocol = true;
service.Start();
var caps = new DesiredCapabilities(new Dictionary<string, object>()
{
{ "ms:edgeOptions", new Dictionary<string, object>() {
{ "binary", @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe" }
}}
});
var driver = new RemoteWebDriver(service.ServiceUrl, caps);
driver.Navigate().GoToUrl("https://bing.com");
Thread.Sleep(2000);
driver.Close();
service.Dispose();
注意: 将代码中的路径更改为您自己的路径。
------------------------------------------------- - - - - - - - - 更新 - - - - - - - - - - - - - - - - - --------------------------在自动化 Edge Chromium 时,您需要使用
Selenium 4.00-alpha04 来使用浏览器特定的选项类:
using OpenQA.Selenium.Edge;
using OpenQA.Selenium.Remote;
EdgeOptions edgeOptions = new EdgeOptions(false);
edgeOptions.BinaryLocation = @"C:\Program Files (x86)\Microsoft\Edge\Application\msedge.exe";
var msedgedriverDir = @"C:\Selenium\Drivers";
var msedgedriverExe = @"msedgedriver.exe";
var service = EdgeDriverService.CreateDefaultService(msedgedriverDir, msedgedriverExe, false);
service.EnableVerboseLogging = true;
var driver = new EdgeDriver(service, edgeOptions);
driver.Navigate().GoToUrl("https://bing.com");
Thread.Sleep(2000);
driver.Close();
注意: 将代码中的路径更改为您自己的路径。
msedgedriver.exe
,甚至不需要知道它的路径在哪里。如果您正在与团队合作或使用构建服务器,那么使用此 NuGet 包会
更好:
Selenium.WebDriver.MSEdgeDriver
这些说明告诉我们如何将 Edge/Chromium 与 Selenium UI 测试结合使用,但它没有提到这个非常好的 NuGet 包!
以下是有关如何初始化驱动程序的说明中的代码:
var options = new EdgeOptions();
options.UseChromium = true;
var driver = new EdgeDriver(options);
msedgedriver
替换为
MicrosoftWebDriver
将驱动复制到Edge浏览器所在路径。例如:C:\Program Files (x86)\Microsoft\Edge\Application
driver = new EdgeDriver ("C:\Program Files (x86)\Microsoft\Edge\Application");