我正在尝试启动Mozilla,但仍然出现此错误:
该Selenium客户端绑定将尝试找到geckodriver从系统中可执行文件PATH。你将需要将包含可执行文件的目录添加到系统路径。
Selenium
geckodriver
在Unix系统上,如果使用的是与bash兼容的shell,则可以执行以下操作将其附加到系统的搜索路径中:
export PATH=$PATH:/path/to/geckodriver
在Windows上,你需要更新Path系统变量以将完整目录路径添加到可执行文件。其原理与Unix相同。
使用任何编程语言绑定来启动最新的firefox的以下所有配置都适用于Selenium2显式启用Marionette。在Selenium 3.0及更高版本中,你不需要做任何事情来使用木偶,因为它是默认启用的。
firefox
Selenium2
Marionette
要在测试中使用木偶,你将需要更新所需的功能才能使用它。
Java:
作为例外,很明显,你需要geckodriver.exe从此处下载最新版本,并geckodriver.exe使用变量将系统中存在的已下载路径设置为具有变量的系统属性,webdriver.gecko.driver然后启动木偶驱动程序并启动Firefox,如下所示:
geckodriver.exe
eckodriver.exe
webdriver.gecko.driver
Firefox
//if you didn't update the Path system variable to add the full directory path to the executable as above mentioned then doing this directly through code System.setProperty("webdriver.gecko.driver", "path/to/geckodriver.exe"); //Now you can Initialize marionette driver to launch firefox DesiredCapabilities capabilities = DesiredCapabilities.firefox(); capabilities.setCapability("marionette", true); WebDriver driver = new MarionetteDriver(capabilities);
并Selenium3用作:
WebDriver driver = new FirefoxDriver();
如果你仍然遇到问题,请也遵循此链接,这将帮助你解决问题
.NET:
var driver = new FirefoxDriver(new FirefoxOptions());
Python:
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities caps = DesiredCapabilities.FIREFOX # Tell the Python bindings to use Marionette. # This will not be necessary in the future, # when Selenium will auto-detect what remote end # it is talking to. caps["marionette"] = True # Path to Firefox DevEdition or Nightly. # Firefox 47 (stable) is currently not supported, # and may give you a suboptimal experience. # # On Mac OS you must point to the binary executable # inside the application package, such as # /Applications/FirefoxNightly.app/Contents/MacOS/firefox-bin caps["binary"] = "/usr/bin/firefox" driver = webdriver.Firefox(capabilities=caps)
Ruby :
# Selenium 3 uses Marionette by default when firefox is specified # Set Marionette in Selenium 2 by directly passing marionette: true # You might need to specify an alternate path for the desired version of Firefox Selenium::WebDriver::Firefox::Binary.path = "/path/to/firefox" driver = Selenium::WebDriver.for :firefox, marionette: true
JavaScript(Node.js):
const webdriver = require('selenium-webdriver'); const Capabilities = require('selenium-webdriver/lib/capabilities').Capabilities; var capabilities = Capabilities.firefox(); // Tell the Node.js bindings to use Marionette. // This will not be necessary in the future, // when Selenium will auto-detect what remote end // it is talking to. capabilities.set('marionette', true); var driver = new webdriver.Builder().withCapabilities(capabilities).build();
Using RemoteWebDriver
如果要以RemoteWebDriver任何语言使用,这将允许你Marionette在SeleniumGrid中使用。
caps = DesiredCapabilities.FIREFOX # Tell the Python bindings to use Marionette. # This will not be necessary in the future, # when Selenium will auto-detect what remote end # it is talking to. caps["marionette"] = True driver = webdriver.Firefox(capabilities=caps)
# Selenium 3 uses Marionette by default when firefox is specified # Set Marionette in Selenium 2 by using the Capabilities class # You might need to specify an alternate path for the desired version of Firefox caps = Selenium::WebDriver::Remote::Capabilities.firefox marionette: true, firefox_binary: "/path/to/firefox" driver = Selenium::WebDriver.for :remote, desired_capabilities: caps
DesiredCapabilities capabilities = DesiredCapabilities.firefox(); // Tell the Java bindings to use Marionette. // This will not be necessary in the future, // when Selenium will auto-detect what remote end // it is talking to. capabilities.setCapability("marionette", true); WebDriver driver = new RemoteWebDriver(capabilities);
.NET
DesiredCapabilities capabilities = DesiredCapabilities.Firefox(); // Tell the .NET bindings to use Marionette. // This will not be necessary in the future, // when Selenium will auto-detect what remote end // it is talking to. capabilities.SetCapability("marionette", true); var driver = new RemoteWebDriver(capabilities);
注意:与其他浏览器供应商提供给Selenium的其他驱动程序一样,Mozilla现在已经发布了一个可执行文件,它将与浏览器一起运行。请遵循此以获取更多详细信息。