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()
优点
- 运行在真实的浏览器中并支持JavaScript
- 比Internet Explorer驱动程序更快
缺点
修改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执行可能会有所不同。
缺点