docker+selenium web自动化测试环境的部署

来源:互联网 发布:java 方法名 编辑:程序博客网 时间:2024/06/06 02:29

docker+selenium web自动化测试环境的部署


1、使用SecureCRT或Docker Quickstart Terminal打开docker终端。

2、下载selemiunUI测试需要的镜像

命令 docker pull:从docker hub中下载镜像。

首先搜索需要pull的image

命令:docker search selenium

针对docker selenium ,这里需要pull的image分别是:

selenium/hub

selenium/node-chrome-debug

selenium/node-firefox-debug
目前只支持在chrome和firefox中进行测试

下载的命令是docker pull+镜像名称+tagdocker pull baozhida/selenium-hub:3.3.1
docker pull baozhida/selenium-node-chrome-debug:58
docker pull baozhida/selenium-node-firefox-debug:52

官方镜像可能会使打开的网页出现中文乱码,故可采用上述镜像。

说明:默认的tag是latest;dockerhub服务器在海外,所以网速时好时坏,有时还会timeout报错,多试几次一定能成功。

由于国内访问直接访问Docker hub网速比较慢,拉取镜像的时间就会比较长。

针对此问题可以从dockerhub上拉取,这时再使用加速器修改docker的registry-mirrors 。这里使用的是DaoCloud的加速器。
下面介绍如何使用daocloud获取加速器的方法。

首先在http://www.daocloud.io/进行注册登录。

待登录成功后,点击加速器,如图所示:


等一会儿会出现以下界面,选择Windows系统,复制获取到的registry-mirrors配置。


请确认你的 Docker Toolbox 已经启动,并执行下列命令(请将 加速地址替换为在加速器页面获取的专属地址)

docker-machine ssh default
sudo sed -i "s|EXTRA_ARGS='|EXTRA_ARGS='--registry-mirror=加速地址 |g" /var/lib/boot2docker/profile
exit
docker-machine restart default 

更多环境的加速配置请参考以下帮助文档

http://guide.daocloud.io/dcs/daocloud-9153151.html

3、查看镜像

输入命令docker images查看已经下载的镜像


4、创建并运行容器

创建selenium hub容器
dockerrun -d -p 4444:4444 --name selehub baozhida/selenium-hub:3.3.1

创建chrome node容器

docker run -d -p 5901:5900 --name node58 --linkselehub:hub

--shm-size=512mbaozhida/selenium-node-chrome-debug:58

创建firefox node容器

docker run -d -p 5912:5900 --name ff52 --linkselehub:hub

--shm-size=512m baozhida/selenium-node-firefox-debug:52

 说明:

*-d参数:后台模式运行;

--name参数:别名;

-p参数:将容器的5900端口映射到docker的5901端口,访问Docker的5901端口即可访问到node容器;

--shm-size参数:docker默认的共享内存/dev/shm只有64m,有时导致chrome崩溃,该参数增加共享内存大小到512m.*

5、输入命令docker ps -a 查看正在运行的容器,处于up状态

 

6、在浏览器输入地址http://192.168.99.100:4444/grid/console
查看Selenium Grid控制台,能看到刚创建的容器已经正常注册

 7、VNC远程浏览器环境

debug结尾的镜像都带有VNC服务端,本机安装VNC客户端,即可远程连接。

下载地址:https://www.realvnc.com/en/connect/download/vnc/
输入192.168.99.100:5901-->回车-->输入密码:secret-->确认-->进入chrome:58容器桌面

输入192.168.99.100:5901-->回车-->输入密码:secret-->确认-->进入firefox:52容器桌面

 

8、在本地运行下面的脚本进行测试。

#coding=utf-8from  selenium import webdriverfirefox_capabilities={    "browserName":"firefox",    "version": "52.0",#注意版本号一定要写对    "platform": "ANY",    "javascriptEnabled": True,    "marionette": True,}browser=webdriver.Remote("http://192.168.99.100:4444/wd/hub",desired_capabilities=firefox_capabilities)#注意端口号4444是我们上文中映射的宿主机端口号browser.get("http://www.baidu.com")browser.get_screenshot_as_file(r"C:/baidu.png")browser.close()

上述代码的效果是:用firefox52.0打开百度界面,并截图保存在C盘中。

但按照以上操作,代码却报出了如下错误:

解决方法:

先按照(http://blog.csdn.net/liujingqiu/article/details/74857145)文中方法进行相应的修改。

然后使用官方镜像创建selenium hub容器:

关闭原selenium hub容器 

docker stop “CONTAINER ID”(对应容器的ID)

删除原selenium hub容器 

docker rm “NAMES”(按上述操作,这里的NAME使用selehub)


下载 selenium/hub镜像

docker pull selenium/hub(版本默认为latest)

创建selenium hub容器
docker run -d -p 4444:4444 --nameselehub selenium/hub


再次运行脚本

原创粉丝点击