代码之家  ›  专栏  ›  技术社区  ›  ERJAN

在selenium中firefox和geckodriver以及firefoxbinary有什么区别?[副本]

  •  0
  • ERJAN  · 技术社区  · 6 年前

    我今天有个简单的问题:

    我用以下代码创建了一个新的selenium项目:

    FirefoxDriver driver = new FirefoxDriver();
    //ChromeDriver driver = new ChromeDriver();
    //InternetExplorerDriver driver = new InternetExplorerDriver();
    

    使用Chrome和IE时,可以开箱即用,但使用Firefox时:

    这个geckodriver.exe文件不存在于当前目录或中 PATH环境变量上的目录。司机可以 下载于 https://github.com/mozilla/geckodriver/releases .

    为什么只有Firefox才需要下载/配置这个驱动程序?

    0 回复  |  直到 8 年前
        1
  •  7
  •   undetected Selenium    5 年前

    逐一回答您的问题:

    1. 为什么Firefox需要GeckoDriver?

    2. 用Chrome和IE开箱即用 -理想情况下,Chrome和IE都不应该起作用。但是,当您在安装/配置Google Chrome&MS internetexplorer或其他相关软件时,会有意/无意地在环境变量中添加二进制文件的位置,这些二进制文件很容易自动定位和使用。

    3. 为什么只有Firefox才需要下载/配置这个驱动程序? -不仅是Firefox,而且Google Chrome&MS Internet Explorer要使用Selenium 3.4.0,您必须从以下位置下载gecko驱动程序v0.16.0(或更高版本) this location 或Chrome驱动程序或IEDriverServer,并将其保存在您的计算机中。将Mozila Firefox、Google Chrome或MS Internet Explorer升级至最新稳定版本。在代码中使用geckodriver/chromedriver/iedriver的绝对路径 System.setProperty 具体如下:

      System.setProperty("webdriver.gecko.driver",  "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
      
        2
  •  1
  •   Khushil    8 年前

    FireFox是基于Mozilla的,selenium需要驱动程序与基于gecko的驱动程序接口-请参阅 geckodriver

        3
  •  1
  •   adee alamsz    8 年前

    你的说法是真的不正确,chromedriver需要把路径以及。我想你之前已经设置了chromedriver,所以它似乎是现成的。

    geckodriver/chromedriver的路径也可以在代码中设置

    我们之所以需要它,是因为firefox>47,firefox webdriver插件没有随浏览器一起提供,因此它应该从geckodriver和selenium 3执行+

        4
  •  0
  •   Henrik    7 年前

    Firefox中作为自动化驱动程序的Marionette支持自定义套接字协议,这与WebDriver规范不兼容。因此需要使用geckodriver作为Selenium和Firefox之间的代理。作为一个小型HTTP服务器实现,它接受符合WebDriver规范的命令,并将这些命令转发给Marionette。同样的情况也适用于来自Marionette的响应,这些响应被转换回与WebDriver兼容的HTTP响应。

    随着Quantum(Rust组件)即将在Firefox中集成,geckodriver在未来将不再是必要的,因为它将在默认情况下集成。