C# Selenium 2.53 在 Firefox 升级到 47 后迁移到木偶驱动程序



我正在尝试使用Selenium进入升级的Firefox Web浏览器自动化。看来硒需要木偶驱动程序才能继续工作。我按照开发人员设置的说明进行操作,

  1. 下载了驱动程序
  2. 将其重命名为电线.exe

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

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

所以我将电线.exe添加到调试\bin文件夹,然后是电线.exe工作正常,但我收到以下错误

系统。无效操作异常被捕获 消息=实体未找到 源=Web驱动程序

这是我用来启动网络驱动程序的代码

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

我也在使用FirefoxDriver(new FirefoxOptions())时遇到了"找不到实体"错误。它似乎正在寻找火狐.exe在C:\Program Files (x86)\Nightly中,但没有找到它。我发现这有效:

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

我尝试这样做并且它正在工作:

  1. 安装 FirefoxDevEdition
  2. 下载壁虎驱动程序.exe

FirefoxDriverService service = FirefoxDriverService.CreateDefaultService(@"C:UsersjmalpartidaDownloadsgeckodriver-v0.8.0-win32", "geckodriver.exe");
service.Port = 64444;
service.FirefoxBinaryPath = @"C:Program Files (x86)Firefox Developer Editionfirefox.exe";
IWebDriver driver = new FirefoxDriver(service);

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

对于远程 Web 驱动程序:

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

要将 Web 驱动程序添加到窗口路径,请执行以下操作:

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

对于您的本地(非 Webdriver)测试,您是对的,您可以使用以下命令运行您的 Web 驱动程序:

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

您不必使用

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

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

最新更新