docker+seleium 实现分布式ui自动化

docker+seleium 实现分布式ui自动化_第1张图片

学习链接

GitHub - SeleniumHQ/docker-selenium: Docker images for Selenium Grid

Docker Hub

查看docker里面可以用的镜像。

1.安装docker,linux环境输入  docker ,会提示安装,安装好以后,再次输入docker,如下图:

docker+seleium 实现分布式ui自动化_第2张图片

 2.下拉需要的镜像。

(在上面的第二个连接里面找自己需要的版本,注意,后缀有debug 的是可以通过远程 查看运行的,学习过程中一般选带debug 的)

docker pull selenium/hub
docker pull selenium/node-chrome-debug:3.141.59
docker pull selenium/node-chrome-debug:3.141.5
docker pull selenium/node-chrome-debug:3.14

因为我司的网站只支持谷歌,所以我都是下载的谷歌不同版本的镜像

下拉docker镜像需要用到root权限,切换root用户 ,su

下图是我依次下拉需要的镜像

docker+seleium 实现分布式ui自动化_第3张图片

 docker+seleium 实现分布式ui自动化_第4张图片

 3.启动镜像

主要是端口的映射和 --name  --link 的值的替换。

sudo docker run -p 5555:4444 --name=hub  -d selenium/hub 

注册虚拟node:

注册虚拟node


sudo docker run -p 5901:5900 --name=c1 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test1 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm -d selenium/node-chrome-debug:3.141.59

sudo docker run -p 5902:5900 --name=c2 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test2 -e DBUS_SESSION_BUS_ADDRESS=/dev/null -v /dev/shm:/dev/shm -d selenium/node-chrome-debug

sudo docker run -p 5903:5900 --name=c3 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test3 -d selenium/node-chrome-debug:3.141.5


sudo docker run -p 5904:5900 --name=c4 --link=hub --shm-size=512m -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -e NODE_APPLICATION_NAME=test4 -d selenium/node-chrome-debug:3.14

注册真实的node:

将selenium-server-standalone 和 webdriver 放在一个目录下

java -jar selenium-server-standalone-3.8.0.jar -role node -port 8888 -hub http://172.26.3.236:5555/grid/register

java -jar selenium-server-standalone-3.8.0.jar -role node -port 8888 -hub http://172.26.3.236:5555/grid/register

如果注册节点的机器有多个ip地址【如:多网卡、NAT方式安装了虚拟机等】,添加-host参数并指定注册节点的ip

java -jar selenium-server.jar -role node -hub http://hub.ip:4444/grid/register -port 5555 -host node.ip

同样的道理,如果启动hub的机器有多个ip地址,那么注册的时候最好也指定一个明确的ip。使用的是-hubHost参数

java -jar selenium-server.jar -role node -hub http://hub.ip:4444/grid/register -port 5555 -hubHost hub.ip

如果注册不成功,重启hub 服务器。

启动成功用命令:docker ps 查看

4.去服务器查看 是否有启动

服务端ip+映射端口5555

docker+seleium 实现分布式ui自动化_第5张图片

 http://localhost:5555/grid/console     或者ip+映射端口/grid/console ,就可以看到所有的node 

docker+seleium 实现分布式ui自动化_第6张图片

 5.脚本启动:

# coding=utf-8

from selenium import webdriver
chrome_capabilities ={
    "browserName": "chrome",
    "version": "",
    "platform": "ANY",
    "javascriptEnabled": True,
    # "marionette": True,
}
browser = webdriver.Remote("http://ip:5555/wd/hub", desired_capabilities=chrome_capabilities)
browser.get("http://www.163.com")
browser.get_screenshot_as_file(r"D:/sample/chrome.png")
browser.quit()

6.使用VNC 远程查看。

docker+seleium 实现分布式ui自动化_第7张图片

 

学习连接:

selenium 结合 docker 构建分布式测试环境 (初学者视角) - AI_爱码小士 - 博客园

你可能感兴趣的:(自动化)