【问题标题】:Selenium Firefox Marionette Driver with .NET C#Selenium Firefox Marionette 驱动程序与 .NET C#
【发布时间】:2016-06-13 12:55:17
【问题描述】:

我最近一直在使用 Selenium (http://www.seleniumhq.org/) 进行测试。它随机停止工作,我认为这是由于 Selenium WebDriver 2.53.0 不再与 Firefox 47 兼容(处理 Firefox 浏览器 (FirefoxDriver) 的 WebDriver 组件已停止使用)。

Marionette ([https://developer.mozilla.org/en-US/docs/Mozilla/QA/Marionette/WebDriver#.NET][2]) 是下一代 FirefoxDriver,我一直试图让它在我的机器上运行,但没有成功。

到目前为止,我已经下载了驱动程序,将文件重命名为 wires.exe 并保存在我网站的根目录中。然后我添加了以下代码:

string strWires = @"Z:\Web_Development\Websites\test\wires.exe";
Environment.SetEnvironmentVariable("webdriver.gecko.driver", strWires);

FirefoxOptions options = new FirefoxOptions();
options.IsMarionette = true;
FirefoxDriver driver = new FirefoxDriver(options);

我收到以下错误消息:

“'OpenQA.Selenium.DriverServiceNotFoundException' 类型的异常 发生在 WebDriver.dll 中但未在用户代码中处理

附加信息:wires.exe 文件不存在于 当前目录或 PATH 环境变量上的目录中。 驱动程序可以在 github.com/jgraham/wires/releases。”

如果有人知道如何让 Marionette 驱动程序与 Selenium 一起工作(或者甚至可以指出我正确的方向)并且可以提供分步说明,我们将不胜感激?

谢谢,

丹尼尔

【问题讨论】:

  • 在将文件下载到 C:/Windows 并重命名后,我收到了与您相同的错误消息。当我解锁它时,我现在得到 OpenQA.Selenium.WebDriverException : Cannot start the driver service on localhost:49426
  • 如果您将wires.exe 放在路径中并直接在命令提示符中执行它,您会收到一条消息“程序无法启动,因为您的计算机中缺少VCRUNTIME140.dll”。可从此处获得:microsoft.com/en-gb/download/details.aspx?id=48145
  • 但是,我已经这样做了,安装了它,它出现在 C:/Windows/System32 中,它仍然给出同样的错误。我什至从同一个位置运行了 wires.exe。
  • 好的,我也从这里安装了 x86 版本:microsoft.com/en-gb/download/details.aspx?id=48145。现在我可以从命令行执行 wires.exe,但是如果我将它作为 Selenium 的一部分运行,我会得到 'System.InvalidOperationException : entity not found'
  • 你有没有运气让它与 Selenium John 一起工作?

标签: c# selenium firefox selenium-webdriver firefox-marionette


【解决方案1】:

Marionette 似乎想使用 FireFox 的夜间版本。下载Geckodriver,重命名为wires.exe,复制到输出。 这对我有用(FireFox 47 和 Selenium 2.53.0):

var driverService = FirefoxDriverService.CreateDefaultService();
driverService.FirefoxBinaryPath = @"C:\Program Files (x86)\Mozilla Firefox\firefox.exe";
driverService.HideCommandPromptWindow = true;
driverService.SuppressInitialDiagnosticInformation = true;

var driver = new FirefoxDriver(driverService, new FirefoxOptions(), TimeSpan.FromSeconds(60));

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-10-12
    • 2023-04-04
    • 2014-11-05
    • 2013-04-25
    • 1970-01-01
    • 2016-08-11
    • 1970-01-01
    • 2015-08-09
    相关资源
    最近更新 更多