最新的selenium测试平台大概有这么几个组件
Selenium Standalone Server: 用来搭建远程测试平台以及分布式测试。
Selenium WebDriver: 最基础的用来创建测试脚本以及用来和上面的server进行交互的客户端的驱动。这个针对不同的开发语言有不同的版本,比如java的,python的,还有C#, Ruby, JavaScript。这个也是Selenium和其他测试工具比比较强大的地方。客户端的脚本你可以选择任一喜欢的语言进行实现,同一个server端都可以执行。
Selenium IDE:录制的plugin,没啥说的,针对不同的浏览器有不同的plugin.可以录制回放,编辑,等等,功能相对webdriver比较弱。值得说的是Selenium IDE也有导出功能,最新版本3.6.0的Firefox上,目前只支持导出Java代码,后续会有其他的代码吧,比较鸡肋,估计支持比较晚。
ThirdParty Driver:这个是用来连接webdriver脚本和浏览器的。比如Firefox上的是Gecko.作用是提供webdriver的HTTP API用于和浏览器通信。最直接的作用就是没有它,你就无法启动浏览器,更别说其他功能。相当于是用来执行webdriver上的API操作到浏览器里。这是一个exe文件。
搭建分布式测试有这些好处:
1. 可以把测试用例分发到不同的机器上,并行运行。这样可以节省大量的时间。
2. 可以搭建不同的测试平台,比如Linux, windows,还有不同的浏览器平台。
3. 就我测试的经验看,有些测试用例必须使用多个机器一起才能实现。比如多用户在线审批流程。
4. 分布式的多并发的测试平台也是一种对系统的压力测试过程,有些问题在单个机器上不会出现,但是多平台一起运行,就会有。
Standalone Server里面有两个基本角色, 这个和交换机非常相似
1. Hub: 类似交换机,拿到client requesit,然后分发
2. Node: 客户端,提交request.
Server搭建有这么几个步骤, server需要机器上已经安装好了java,因为这是一个jar package.
1. 下载selenium-server-standalone-4.0.0-alpha-1.jar.
2. 然后java 启动执行。这里都使用默认值
java -jar selenium-server-standalone-4.0.0-alpha-1.jar -role hub
可以在浏览器访问http://localhost:4444/grid/console
2.把client server加入到hub 里面
1. 下载selenium-server-standalone-4.0.0-alpha-1.jar.
2. 然后java 启动执行。这里都使用默认值
java -jar selenium-server-standalone-4.0.0-alpha-1.jar -role node -hub http://localhost:4444/grid/register
刷新下刚才的http://localhost:4444/grid/console 就能看见Node已经加进去了, 最简单的Grid就搭建完毕了。
使用Grid运行测试用例(python代码)
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME) driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.OPERA) driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)
配置Node以及Hub
有两种方式可以配置Node
1. 使用命令行方式
2. 使用JSON文件
具体的参看下面的link