【问题标题】:c# Selenium 2.53 moving to marionette driver after firefox upgrade to 47c# Selenium 2.53 在 firefox 升级到 47 后移动到 marionette 驱动程序
【发布时间】:2016-10-12 04:18:36
【问题描述】:

我正在尝试使用 selenium 进入升级后的 firefox 网络浏览器自动化。看来 selenium 需要木偶驱动才能继续工作。我按照开发者设置的说明进行操作,

  1. 已下载驱动
  2. 将其重命名为wires.exe

以下代码未能将 PATH 正确设置为自定义路径。

System.Environment.SetEnvironmentVariable("webdriver.gecko.driver", "@C:\DOWNLOADS\wires.exe")

所以我将wires.exe 添加到debug\bin 文件夹,然后wires.exe 正常工作,但出现以下错误

System.InvalidOperationException 被捕获 Message=entity not found Source=WebDriver

这是我用来启动 webdriver 的代码

FirefoxOptions option1 = new FirefoxOptions();
option1.IsMarionette = true;
option1.AddAdditionalCapability("marionette", true);
driver = new FirefoxDriver(option1);

【问题讨论】:

    标签: c# selenium firefox firefox-marionette


    【解决方案1】:

    我在使用 FirefoxDriver(new FirefoxOptions()) 时也遇到了 “Entity Not Found” 错误。它似乎在 C:\Program Files (x86)\Nightly 中寻找 firefox.exe 并没有找到它。我发现这个工作:

    FirefoxDriverService service = FirefoxDriverService.CreateDefaultService();
    service.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
    IWebDriver driver = new FirefoxDriver(service);
    

    【讨论】:

    • 非常好,这对我有用,但是否可以使用 firefoxprofile 创建如上图所示的木偶驱动程序?我没有看到任何以服务和配置文件作为输入来创建驱动程序的选项?
    【解决方案2】:

    我尝试了这个并且它正在工作:

    1. 安装 FirefoxDevEdition
    2. 下载 geckodriver.exe

    FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:\Users\jmalpartida\Downloads\geckodriver-v0.8.0-win32", "geckodriver.exe");
    service.Port = 64444;
    service.FirefoxBinaryPath = @"C:\Program Files (x86)\Firefox Developer Edition\firefox.exe";
    IWebDriver driver = new FirefoxDriver(service);
    

    【讨论】:

      【解决方案3】:

      首先,您需要将驱动程序添加到系统路径中,而不是作为环境变量。 其次,您需要将标志设置为所需的功能,而不是 Firefox 选项。见:Marionette Webdriver

      对于远程 webdriver:

      DesiredCapabilities capabilities = DesiredCapabilities.Firefox();  
      capabilities.SetCapability("marionette", true); 
      var driver = new RemoteWebDriver(capabilities); 
      

      要将网络驱动程序添加到您的windows path

      最简单的方法是打开开始菜单>搜索环境>打开编辑系统环境变量>点击环境变量>在列表中搜索路径>点击编辑>最后添加;C:\path\to\webdriver\location\wires.exe并点击保存.

      对于您的本地(非 webdriver)测试,您是对的,您可以使用以下命令运行您的 webdriver:

      var driver = new FirefoxDriver(new FirefoxOptions());

      你不应该使用

      option1.IsMarionette = true; option1.AddAdditionalCapability("marionette", true);

      如果您在路径环境变量中正确设置了驱动程序路径。

      【讨论】:

      • 我必须使用 Remotewebdriver 吗?可以选择在您提到的“更新您的测试以使用 Marionette”的站点上简单地升级,但只有一行与我使用的代码相似的简单代码行。顺便说一下,我下载的驱动程序是一个exe文件,我将其重命名为文件wires.exe。当您说将驱动程序添加到系统路径时,您的意思是“C:\ Windows”之类的东西,我正确吗?
      • 我试过了,还是不行,还是出现 entity not found 错误
      猜你喜欢
      • 2016-10-12
      • 1970-01-01
      • 1970-01-01
      • 2016-11-25
      • 2018-07-31
      • 2023-04-04
      • 2023-04-09
      • 1970-01-01
      相关资源
      最近更新 更多