c#Selenium 2.53在firefox升级到47之后移动到牵线木偶驱动程序
我正在尝试使用selenium进入升级的firefox Web浏览器自动化。 似乎selenium需要木偶司机才能继续工作。 我按照开发人员的指示,
- 下载了驱动程序
- 将其重命名为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);
我尝试这个,它的工作:
- 安装FirefoxDevEdition
- 下载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);
如果已在路径环境变量中正确设置了驱动程序路径。