c#Selenium 2.53在firefox升级到47之后移动到牵线木偶驱动程序

我正在尝试使用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消息=未找到实体Source = WebDriver

这是我用来启动webdriver的代码

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

我也使用FirefoxDriver(新的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); 

我尝试这个,它的工作:

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

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

因此对于远程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);

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