为什么在selenium2.0中不需要像IE和chrome这样的外部firefox驱动程序..?

She*_*y's 3 webdriver selenium-webdriver

我有两个疑惑,请帮助我解决这些问题

1)为什么运行selenium2.0没有像IE和Chrome这样的firefox驱动程序[.exe] ..?

2)为什么我们需要在selenium2.0中使用IE和chrome时初始化IE和chrome驱动程序..?

谢谢Mahesh

Arr*_*ran 5

  1. FirefoxDriver是特别的,它预先捆绑在包装中:

https://code.google.com/p/selenium/wiki/FirefoxDriver

Firefox驱动程序包含在下载中提供的selenium-server-stanalone.jar中.驱动程序以xpi(firefox扩展名)的形式出现,当你启动FirefoxDriver的新实例时,它会添加到firefox配置文件中.

与Safari驱动程序的工作方式非常相似:

https://code.google.com/p/selenium/wiki/SafariDriver

SafariDriver实现为Safari浏览器扩展.驱动程序反转传统的客户端/服务器关系,并使用WebSockets与WebDriver客户端通信.

它只是一个创建并用于与Firefox通信的扩展,其他浏览器和驱动程序根本不遵循相同的实现,因此,您需要为其他人启动驱动程序和可执行文件.

2)类似于我刚才所说的.实施是不同的.

IEDriver用途非常低级的Win32 API的调用来执行它的一些工作中,FirefoxDriverChromeDriver并不需要这样做:

https://code.google.com/p/selenium/wiki/InternetExplorerDriver


Jas*_*tta 5

1. Mozilla 已创建geckodriver用于 Firefox v48 及更高版本的二进制文件。

注意:如果使用 Firefox v47 及更早版本,则可以忽略以下内容,因为它使用本机 Firefox 浏览器实现。

为了让 Selenium 挂接到 Firefox,必须在实例化 WebDriver 之前设置 Geckodriver 二进制路径系统属性。

webdriver.gecko.driver = path/to/geckodriver

下面是在Java中设置属性。

System.setProperty("webdriver.gecko.driver","path/to/geckodriver"); WebDriver driver = new FirefoxDriver();

自 2017 年 3 月起,最新的 Geckodriver 必须与 Selenium v​​3.3 及更高版本一起使用。

Selenium Java - Maven 存储库

2.初始化InternetExplorerDriver和Chromedriver的原因是它们各自都有特定的浏览器选项。

此外,使用驱动程序二进制文件的另一个原因是 Selenium 没有 Internet Explorer、Chrome 和 Firefox(从 v48 及更高版本开始)的浏览器事件的本机实现。

我能找到的唯一证据来自How to Use GeckoDriver - ToolsQA (2016-09-28),其中指出从 Selenium 中删除了本机 Firefox 事件。

Gecko 驱动程序是 Selenium 中的测试和 Firefox 浏览器之间的链接。

GeckoDriver 是使用 W3C WebDriver 兼容客户端与基于 Gecko 的浏览器(本例中为 Mozilla Firefox)交互的代理。

由于 Selenium 3 不会有任何 FF 的本机实现,因此我们必须通过 Gecko Driver 来指挥所有驱动程序命令。

一个合乎逻辑的假设是,Selenium 以前从未有过 Internet Explorer 或 Chrome 的本机事件,这就是为什么它需要为每种浏览器类型使用特定的驱动程序二进制文件。