在本书的写作和编辑过程中,Selenium也在不停地发展和更新。从本书开始写作时的Selenium 2的2.53.1版本,到本书审核编辑时的Selenium 3的3.1.1版本。虽然在大版本上有所更新,但主要的更新还是集中在后台和底层方面。所以基于Selenium 2版本的测试脚本,基本上无须修改就可以直接兼容Selenium 3的版本。
本小节主要介绍Selenium 3相对于Selenium 2有了哪些更新,以便于读者根据自己的需求来选择使用哪个版本。
Selenium RC是Selenium 1的产物,在Selenium 2的时候为了兼容一部分Selenium 1的项目,因此把Selenium RC集成到了Selenium Server中了,统一发布为Selenium-standalone包。而从Selenium 3开始将完全摒弃对Selenium RC的支持。
Selenium 3开始需要Java支持的功能,都统一需要JDK1 8.0以上版本的支持。比如Java版本的Selenium脚本;或者Python版本脚本需要用到的Selenium Server。
在Selenium 2的时候,Selenium IDE还只能支持FireFox插件,如今Selenium 3的IDE已经同时支持Firefox和Chrome插件了。下载地址分别如下。
Firefox插件下载地址如下。
https://chrome.google.com/webstore/detail/selenium-ide/mooikfkahbdckldjjndioackbalphokd
Chrome插件下载地址如下。
https://addons.mozilla.org/en-US/firefox/addon/selenium-ide/
Selenium 2的时候,Firefox浏览器的驱动由WebDriver项目组开发,并且随各语言Clent的基础包同时发布,所以不需要额外安装就可以直接使用。而Selenium 3开始对于版本在Firefox 47及以上的浏览器,必须要安装geckodriver驱动才能正常运行。
geckodriver驱动的下载和使用步骤如下。
(1)从https://github.com/mozilla/geckodriver/releases下载对应的驱动版本。
(2)把二进制文件解压到Firefox的安装目录。
(3)把Firefox的安装目录添加到系统环境变量。
(4)执行如下代码测试驱动安装。
import time from selenium import webdriver driver = webdriver.Firefox() driver.get("http://www.baidu.com") driver.find_element_by_id("kw").clear() driver.find_element_by_id("kw").send_keys("Python") driver.find_element_by_id("su").click() time.sleep(5) driver.quit()
(5)代码执行无错误表示驱动安装成功。
注意 geckodriver驱动的不同版本对Selenium和Firefox都有版本要求。在下载驱动之前先确定待测试的Firefox版本,并升级相应的Selenium版本。而对于Firefox 46及以下的版本,则需要使用Selenium 2来支持测试。
Selenium 3对IE浏览器也进行了规定,仅对IE 9及以上的版本进行支持。对于需要测试低版本的IE,则需要使用Selenium 2环境来支持覆盖。
除了对IE的支持之外,Selenium 3也开始支持微软的Edge浏览器。Edge驱动的下载地址如下。
https://developer.microsoft.com/en-us/microsoft-edge/tools/webdriver/
需要注意的是,Edge浏览器只有Windows 10才有,所以安装Edge驱动的前提是操作系统为Windows 10。
Selenium 2的时候也有SafariDriver,但并不是Apple团队开发的。Selenium 3开始Safari官方推出了自己的SafariDriver,相信在稳定性和兼容性上会有不少的提升。其下载地址如下。
http://selenium-release.storage.googleapis.com/2.48/SafariDriver.safariextz
另外,Selenium 3也开始支持Mac系统。自此Selenium的兼容性将横跨Windows、Linux、Mac三大操作系统平台。
总体而言,Selenium 3的升级有太多的结构上的变化,更多的是在底层支持上有所扩展的变化。读者在选择Selenium版本的时候,则需要根据自己的需求来确定。因为Selenium 2和Selenium 3在浏览器的支持上有所区别,针对老版本浏览器可能还是需要Selenium 2才能支持,而如果没有硬性要求则可以直接使用Selenium 3。