4

我有两个疑问请帮我解决这些

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

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

谢谢马赫什

4

2 回答 2

6
  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 调用来完成一些工作,FirefoxDriver或者ChromeDriver不需要这样做:

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

于 2013-11-13T14:46:29.260 回答
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-03 起,最新的 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 Driver 是您在 Selenium 中的测试和 Firefox 浏览器之间的链接。

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

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

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

于 2017-03-30T00:28:29.397 回答