docker+selenium grid+python实现分布式自动化测试

1、docker里获取selenium 镜像

先启动docker 服务,输入命令,service docker start

然后获取selenium相关镜像,本篇部署一个hub,一个chrome node

输入命令

docker pull selenium/hub

docker pull selenium/node-chrome-debug

没指定版本即下载最新版本的镜像,docter会尝试先从默认镜像仓库下载(默认使用docter hub公共注册服务器中的仓库),也可以通过配置,使用自定义的镜像仓库

下载会比较慢,全部下载完成以后,查看下载完的镜像

输入命令

docker images

这里介绍下添加国内镜像的方法,这样下载会很快

我这里用阿里云加速器

登录阿里开发平台注册:https://dev.aliyun.com/search.html

进入加速器页面

https://cr.console.aliyun.com/#/accelerator

点击创建我的容器镜像,点击镜像加速器,选择自己所属平台,按要求配置即可

2、创建并运行selenium相关容器

输入命令:
docker run -p 5555:4444 -d --name hub selenium/hub
docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug

输入docker ps 显示正运行的容器

run 是创建并运行容器。
-p 是把容器里的端口映射出来,让别人可以访问。
-d 在后台运行
--name 给容器起别名

--link是链接别名为hub的容器

打开http://42.192.206.87:5555/grid/console,这时候selenium grid环境已经部署完成,这就是在docker里部署的好处,用容器的隔离,省去好几台设备部署node,

3、运行测试

到这里就环境部署完成,直接运行测试即可

from selenium import webdriver
from selenium.webdriver.common.keys import Keys
import time

driver = webdriver.Remote(
# 设定Node节点的URL地址,后续将通过访问这个地址连接到Node计算机
# command_executor='http://192.168.221.2:4445/wd/hub', # 要和节点机显示的ip地址一样
command_executor='http://42.192.206.87:5555/wd/hub',
desired_capabilities={
# 指定远程计算机执行使用的浏览器为chrome;或者internet explorer/firefox
"browserName": "chrome",
"video": "True",
# 远程计算机的平台
"platform": "LINUX"
})

try:
driver.implicitly_wait(10)
driver.maximize_window()
driver.get("http://www.sogou.com")
assert u"搜狗" in driver.title
elem = driver.find_element_by_id("query")
elem.send_keys("自动化测试")
elem.send_keys(Keys.RETURN)
time.sleep(3)
assert "自动化" in driver.page_source
print('done!')
finally:
driver.quit()

Chromedirver也可以不用配置
下载命令如下

mkdir -p /opt/webDriver
cd /opt/webDriver
rz 上传对应版本dirver
unzip chromedriver_linux64.zip
chmod 775 chromedriver

运行脚本结果如图


image.png

你可能感兴趣的:(docker+selenium grid+python实现分布式自动化测试)