驱动程序细节和权衡

Selenium-WebDriver的驱动程序

WebDriver是应该写入测试的关键接口的名称,但有几种实现。这些包括:

HtmlUnit驱动程序

这是目前WebDriver最快和最轻量级的实现。顾名思义,这是基于HtmlUnit。HtmlUnit是没有GUI的WebBrowser的基于Java的实现。对于任何语言绑定(除java以外),Selenium Server都需要使用此驱动程序。

driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNIT.copy())

优点

  • 最快的WebDriver实现
  • 纯Java解决方案,因此它是平台独立的。
  • 支持JavaScript

缺点

  • 模拟其他浏览器的JavaScript行为

JavaScript中的驱动程序的HtmlUnit

目前流行的浏览器都没有使用HtmlUnit(Rhino)使用的JavaScript引擎。如果使用HtmlUnit测试JavaScript,结果可能会与这些浏览器显着不同。

当我们说“JavaScript”时,我们实际上是指“JavaScript和DOM”。虽然DOM是由W3C定义的,但每个浏览器都有自己的怪癖和它们在实现DOM方面的差异,以及JavaScript如何与它进行交互。HtmlUnit拥有令人印象深刻的DOM完整实现,并且对使用JavaScript有很好的支持,但它与其他任何浏览器没有什么不同:它与W3C标准和主要浏览器的DOM实现都有其自身的差异。

使用WebDriver,我们必须做出选择; 我们是否启用了HtmlUnit的JavaScript功能,并且冒着团队陷入只出现在那里的问题的风险,还是因为知道有越来越多的依赖JavaScript的站点而禁用JavaScript?我们采取了保守的方法,并且默认情况下在使用HtmlUnit时禁用了支持。每次发布WebDriver和HtmlUnit,我们都会重新评估这一决定:我们希望在某个时候在HtmlUnit上默认启用JavaScript。

启用JavaScript

如果您不能等待,启用JavaScript支持非常简单:

driver = webdriver.Remote("http://localhost:4444/wd/hub", webdriver.DesiredCapabilities.HTMLUNITWITHJS)

这将导致HtmlUnit驱动程序默认模拟Firefox 3.6的JavaScript处理。

Firefox驱动程序

使用Firefox插件控制Firefox浏览器。所使用的Firefox配置文件从机器上安装的内容中剥离下来,仅包含Selenium WebDriver.xpi(插件)。默认情况下,一些设置也会更改(请参阅源代码以查看哪些设置)Firefox驱动程序可以运行并在Windows,Mac,Linux上进行测试。目前在版本3.6,10,最新

用法

driver = webdriver.Firefox()

优点

缺点

修改Firefox配置文件

假设您想修改用户代理字符串(如上所述),但是您已经制作了一个包含数十个有用扩展的Firefox配置文件。有两种方法可以获取此配置文件。假设该配置文件是使用Firefox的配置文件管理器(firefox -ProfileManager)创建的,

或者,如果配置文件尚未在Firefox中注册:

在我们开发Firefox驱动程序的功能时,我们公开了使用它们的能力。例如,直到我们认为本地事件在Firefox for Linux上稳定后,它们在默认情况下处于禁用状态。要启用它们:

profile = webdriver.FirefoxProfile()
profile.native_events_enabled = True
driver = webdriver.Firefox(profile)

Internet Explorer驱动程序

InternetExplorerDriver是一个独立的服务器,它实现WebDriver的有线协议。该驱动程序已经在Vista,Windows 7,Windows 8和Windows 8.1的适当组合下与IE 7,8,9,10和11进行了测试。

该驱动程序支持运行32位和64位版本的浏览器。如何确定在启动浏览器时使用哪个“bit-ness”取决于启动哪个版本的IEDriverServer.exe。如果启动32位版本的IEDriverServer.exe,则将启动32位版本的IE。同样,如果启动64位版本的IEDriverServer.exe,则将启动64位版本的IE。

用法

driver = webdriver.Ie()

优点

  • 运行在真实的浏览器中并支持Javascript

缺点

  • InternetExplorerDriver显然只能在Windows上运行!
  • 相对较慢(尽管仍然非常活泼!)

ChromeDriver

ChromeDriver由Chromium 项目维护/支持WebDriver通过chromedriver二进制文件与Chrome一起使用。您需要同时安装chromedriver和Chrome浏览器版本。需要将chromedriver放置在系统路径的某个位置,以便WebDriver自动发现它。Chrome浏览器本身是由默认安装路径中的chromedriver发现的。这两者都可以被环境变量覆盖

用法

driver = webdriver.Chrome()

优点

  • 运行在真实的浏览器中并支持JavaScript
  • 由于Chrome是基于Webkit的浏览器,ChromeDriver可能允许您验证您的网站是否在Safari中运行。请注意,由于Chrome浏览器使用自己的V8 JavaScript引擎而不是Safari的Nitro引擎,因此JavaScript执行可能会有所不同。

缺点

 
原文地址:https://www.cnblogs.com/weiweim/p/8463622.html