蓝色的天_90  

官方地址

https://github.com/SeleniumHQ/docker-selenium

 

推荐命令

$ docker network create grid
#创建一个网络

#启动hub

docker run -d -p 4442-4444:4442-4444 --net grid -e GRID_MAX_SESSION=5 -e GRID_TIMEOUT=900 --name selenium-hub selenium/hub:latest

#注册node
docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm --name=chrome selenium/node-chrome:latest


docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm --name=firefox selenium/node-firefox:latest

docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm --name=edge selenium/node-edge:latest

#注册可以进入容器内部的node
docker run -d -p 4445:4444 -p 7900:7900 --shm-size="2g" -v /dev/shm:/dev/shm --name=chrome-vnc selenium/standalone-chrome:latest
docker run -d -p 4446:4444 -p 7901:7900 --shm-size="2g" -v /dev/shm:/dev/shm --name=edge-vnc selenium/standalone-edge:latest
docker run -d -p 4447:4444 -p 7902:7900 --shm-size="2g" -v /dev/shm:/dev/shm --name=firefox-vnc selenium/standalone-firefox:latest

#运行http://ip:7900 即可进入到容器内部,查看具体浏览器的运行情况
#http://ip:7901/
#http://ip:7902/
密码:secret

我们的测试环境并不是线上环境,需要内部的网络这时候就需要自定义容器内的hosts

下面有几种办法供参考

1、直接在启动容器时与宿主机共享hosts文件,这个的前提是宿主机和容器的hosts一致

docker run -d -p 4442-4444:4442-4444 --net grid -e GRID_MAX_SESSION=5 -e GRID_TIMEOUT=900 -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name selenium-hub selenium/hub:latest


docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm  -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=chrome selenium/node-chrome:latest


docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm  -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=firefox selenium/node-firefox:latest

docker run -d --net grid -e SE_EVENT_BUS_HOST=selenium-hub  --shm-size="2g" -e SE_EVENT_BUS_PUBLISH_PORT=4442 -e SE_EVENT_BUS_SUBSCRIBE_PORT=4443 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 -v /dev/shm:/dev/shm  -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=edge selenium/node-edge:latest


docker run -d -p 4445:4444 -p 7900:7900 --shm-size="2g" -v /dev/shm:/dev/shm  -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=chrome-vnc selenium/standalone-chrome:latest
docker run -d -p 4446:4444 -p 7901:7900 --shm-size="2g" -v /dev/shm:/dev/shm  -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=edge-vnc selenium/standalone-edge:latest
docker run -d -p 4447:4444 -p 7902:7900 --shm-size="2g" -v /dev/shm:/dev/shm  -e TZ=Asia/Shanghai -v /etc/hosts:/etc/hosts --name=firefox-vnc selenium/standalone-firefox:latest

2、使用docker run -add-host 选项增加内容 

示例:

docker run –add-host=hostname:IP

docker run -it --name alpine-test1 --add-host=test.baidu.com:192.168.1.37 docker.io/alpine

3、在docker-compose.yml文件中,通过配置参数extra_hosts来实现。例如:

extra_hosts:

- "somehost:10.10.192.11"

- "otherhost:10.10.192.23"

 4、搭建完成后访问回 http://ip:4444

 

执行测试脚本

from selenium import webdriver

def test_selenium_grid():
    driver = None
    try:
        driver = webdriver.Remote(command_executor='http://ip:4446',
                                  desired_capabilities={'browserName': 'edge'})

        driver.get('http://test.wanfangdata.com.cn')
        driver.implicitly_wait(15)
        driver.get_screenshot_as_file("./test_img.png")
        print("OK")
    finally:
        if driver is not None:
            driver.quit()

进入到容器内部

’http://ip:7901/ 输入密码 即可看到容器内部浏览器运行的效果了

posted on 2022-03-07 16:22  蓝色的天_90  阅读(158)  评论(0编辑  收藏  举报