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

来源:互联网 发布:it招标书 编辑:程序博客网 时间:2024/06/05 08:35

把环境部署在docker里,会更干净,更好管理,部署起来更容易,且可复制性强等,好处不多说,直接记录过程

dockers的安装及基本命令上一篇已经介绍过http://blog.csdn.net/songer_xing/article/category/7301775,本篇直接结合selenium 

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

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


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://192.168.253.228:5555/grid/console,这时候selenium grid环境已经部署完成,这就是在docker里部署的好处,用容器的隔离,省去好几台设备部署node,


3、运行测试

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

#coding=utf-8from selenium import webdriverimport oschrome_driver = os.path.abspath(r"/opt/webDriver/chromedriver")os.environ["webdriver.chrome.driver"] = chrome_driverchrome_capabilities ={    "browserName": "chrome",    "version": "",    "platform": "ANY",    "javascriptEnabled": True,    "webdriver.chrome.driver":chrome_driver}browser = webdriver.Remote("http://192.168.253.228:5555/wd/hub", desired_capabilities=chrome_capabilities)browser.get("http://www.163.com")print browser.titlebrowser.get_screenshot_as_file(r"d:/chrome.png")browser.quit()

这里要注意的是,使用chrom浏览器,需要配置chromedriver,配置方法有两种,一种是配在环境变量里,我是直接在代码里指定路径

下载命令如下

mkdir -p /opt/webDriver
cd /opt/webDriver
wget https://chromedriver.storage.googleapis.com/2.33/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod 775 chromedriver

运行脚本结果如图

但打开截图发现中文乱码,连接vnc进去看,运行打开浏览器中文确实是乱码


4、基于Dockerfile创建镜像,解决中文乱码问题

Dockerfile加入内容如下

FROM selenium/node-chrome-debugUSER rootRUN apt-get update \    && apt-get -y install ttf-wqy-microhei ttf-wqy-zenhei \    && apt-get clean

先将Dockerfile上传到目标主机上,先安装上传命令

yum install lrzsz –y,之后rz上传

主要基于原镜像,加入中文字体

运行dockerfile来构建,输入命令

docker build -t node-chrome-debug/chinese  /opt/songer/


构建完成,即生成新的镜像,运行

docker run -d -p 5902:5900  --link hub:hub --name chinese node-chrome-debug/chinese

如图,已经运行


5、重新测试


测试端口连接如图,可用,测试截图后,中文正常

用vnc连接进去,最终效果如图







原创粉丝点击