一、Selenium Server 环境配置
1、selenium grid的组成与作用:由一个集线器hub和多个客户机node组成,如果你的程序需要在不用的浏览器,不同的操作系统上测试,而且比较多的case需要多线程远程执行,那么一个比较好的测试方案就是使用 selenium grid,hub用来管理各个代理节点的注册和状态信息,并且接受远程客户端代码的请求调用,然后把请求的命令再转发给代理节点来执行。
(二)selenium grid的优势
1.在ui自动化的测试过程中,测试各个版本浏览器的兼容性问题
2.在ui自动化测试,当测试用例比较多的时候,使用selenium grid分布式处理能大大的提高测试的效率
(三)配置环境
1.安装JDK,配置好java环境变量
2.下载selenium-server-standalone 地址:http://selenium-release.storage.googleapis.com/index.html
3.Chrome驱动下载地址:https://sites.google.com/a/chromium.org/chromedriver/downloads下载与系统及浏览器版本匹配的driver版本:chromedriver_win32.zip
4. Firefox 驱动下载地址:https://github.com/mozilla/geckodriver/releases 下载与系统及浏览器版本匹配的driver版本:geckodriver-v0.19.1-win64.zip
(四)启动 Selenium Grid
1. 将下载的selenium-server-standalone-3.141.0.jar放在D盘的目录创建一个文件夹D:\Grid
2.创建一个批处理文件,用来启动Selenium Grid服务
(五)Selenium Grid 分布式测试脚本
我们编写一个Selenium Grid自动化测试脚本,分别在2个node上运行Chrome,Firefox,执行百度WEB页面自动化测试。
# coding:utf-8
from selenium.webdriverimport Remote
import time
# 定义node_hub与浏览器对应关系
nodes = {
'http://127.0.0.1:5555/wd/hub':'chrome',
'http://127.0.0.1:5556/wd/hub':'firefox'
}
# 通过不同的浏览器执行测试脚本
for host, browserin nodes.items():
print(host, browser)
# 调用remote方法
driver = Remote(command_executor=host,
desired_capabilities={'platform':'ANY', 'browserName': browser, 'version':'', 'javascriptEnabled':True})
# 打开百度首页并搜索词语,最后判断搜索跳转页面标题是否含有搜索词
wd ='我要自学网'
driver.get('https://www.baidu.com')
driver.find_element_by_id("kw").send_keys(wd)
driver.find_element_by_id("su").click()
time.sleep(2)
driver.quit()
如图展示