3

我正在尝试使用 selenium 进入升级后的 firefox Web 浏览器自动化。看来 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);
4

3 回答 3

3

我也使用 FirefoxDriver(new FirefoxOptions())得到“找不到实体”错误。它似乎在 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);
于 2016-06-14T18:33:46.527 回答
2

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

  1. 安装 Firefox 开发版
  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);
于 2016-06-15T04:09:28.307 回答
0

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

对于远程 webdriver:

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

要将 webdriver 添加到您的Windows 路径

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

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

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

你不应该使用

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

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

于 2016-06-12T19:43:33.950 回答