【问题标题】:What driver do I have to use to run a selenium test in c # on the Edge Chromium browser?我必须使用什么驱动程序才能在 Edge Chromium 浏览器上的 c# 中运行 selenium 测试?
【发布时间】:2020-06-15 11:31:00
【问题描述】:

我正在尝试使用 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位)

我做错了什么?我的错误是什么? 如何解决?

谢谢

【问题讨论】:

标签: c# selenium selenium-webdriver automated-tests microsoft-edge


【解决方案1】:

您使用的 selenium 版本是什么?如果您使用的是 Selenium 4.00-alpha03 及更早版本,您可以参考以下步骤来自动化 Microsoft Edge Chromium:

  • here 安装 C# Selenium WebDriver 3.141.0。
  • this page下载匹配版本的Microsoft Edge Driver。
  • 示例 C# 代码:
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 来使用特定于浏览器的选项类:

  • here下载Selenium 4.00-alpha04的.NET语言绑定

  • this page下载匹配版本的Microsoft Edge Driver。

  • 示例 C# 代码:

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

注意:将代码中的路径更改为您自己的。

【讨论】:

  • Selenium 版本 3.141.0
  • 你试过我提供的代码了吗?它适用于 selenium 3.141.0,可以很好地自动化 Edge webdriver。我认为这不是错误的驱动程序版本,而是您的代码中的一些错误导致了错误。
  • 当我编写您提供给我的代码时,它可以正常工作,但 Visual Studio 告诉我不推荐使用 desiriedCapabilities,我必须使用特定于浏览器的选项类
  • 如果要使用 Edge 浏览器特定的选项类,则需要使用 selenium 4.00-alpha04。请检查我的更新。如果您使用 selenium 3.141.0 并使用 Edge 选项,它将指向 Edge Legacy 并使用 Edge Legacy webdriver MicrosoftWebDriver.exe。
【解决方案2】:
driver = new EdgeDriver ("C:\\Selenium\\Drivers\\msedgedriver.exe");

请从路径中删除不必要的空格,并在路径中包含 .exe 文件

【讨论】:

  • 我没有这些空间。写错了
  • 如果我这样做,消息只会更改为“:文件 c:\WebDriver\msedgedriver.exe\MicrosoftWebDriver.exe 不存在”
  • 请看我的回答。您无需下载 msedgedriver.exe,也无需在构造函数代码中包含 exe 的路径。
【解决方案3】:

您不需要下载msedgedriver.exe,甚至不需要知道它的路径。

如果您正在与团队合作或使用构建服务器,则使用此 NuGet 包要好得多

Selenium.WebDriver.MSEdgeDriver

它将为您下载 exe!而且您不必将其包含在源代码管理中。

These instructions 告诉如何将 Edge/Chromium 与 Selenium UI 测试一起使用,但它没有提到这个非常好的 NuGet 包!

以下是有关如何初始化驱动程序的说明中的代码:

        var options = new EdgeOptions();
        options.UseChromium = true;
        var driver = new EdgeDriver(options);

【讨论】:

    【解决方案4】:

    在撰写本文时,nuget 包Selenium.WebDriver.MSEdgeDriver 下载的Edgedriver 是msedgedriver.exe,但EdgeDriver(...) 构造函数正在寻找MicrosoftWebDriver.exe

    我发现你可以像这样指定 exe 的名称:

    IWebDriver driver = new EdgeDriver(
       EdgeDriverService.CreateDefaultService(".", "msedgedriver.exe"));
    

    希望这对你有用。

    【讨论】:

      【解决方案5】:

      msedgedriver 替换为MicrosoftWebDriver

      将驱动复制到Edge浏览器所在的路径。例如:C:\Program Files (x86)\Microsoft\Edge\Application

      然后,使用Edge浏览器路径初始化驱动:

      driver = new EdgeDriver ("C:\Program Files (x86)\Microsoft\Edge\Application");
      

      【讨论】:

        猜你喜欢
        • 2020-05-03
        • 2019-08-10
        • 1970-01-01
        • 1970-01-01
        • 2020-08-19
        • 1970-01-01
        • 2019-07-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多