selenium===使用docker搭建selenium分布式测试环境

时间:2021-03-03 21:41:25

准备:

#请在此之前先了解,selenium grid ;参考:selenium-grid ,下载地址win-本地部署过程

>>>环境准备: Linux操作系统

>>>给Linux安装Python(linux 默认已经安装)

>>>安装docker参考Ubuntu安装docker步骤,安装完毕后检验,安装是否正确

>>>docker search selenium   命令查看需要安装的selenium包 ;目前只支持Chrome 和 Firefox两种浏览器

selenium===使用docker搭建selenium分布式测试环境

>>>下载主 hub 对象: sudo docker pull selenium/hub

>>>下载主node - Chrome 镜像 :sudo docker pull selenium/node-chrome

>>>下载完成后查看镜像:sudo docker images

selenium===使用docker搭建selenium分布式测试环境

>>>启动主hub 容器:sudo docker run -d -P --name selenium-hub selenium/hub

  • -d 表示容器以守护态(Daemonized)形式运行。
  • -P 表示 Docker 会随机映射一个 49000~49900 的端口到内部容器开放的网络端口。

>>> 启动分支node 容器 :sudo docker run -d --link selenium-hub:hub selenium/node-chrome

  • --link 通过 link 关联 selenium-hub 容器,并为其设置了别名hub

>>>查看容器:docker ps  -a 

selenium===使用docker搭建selenium分布式测试环境

  * Selenium/hub 容器的端口号为 4444,对Ubuntu映射的端口为 32768,前面通过 -P 参数自动分配

>>> OK!环境搭建至此结束。使用  http://Linux外网地址:32768/grid/console  ; 查看环境

selenium===使用docker搭建selenium分布式测试环境

>>> 运行本地的测试脚本;

from selenium import webdriver
from time import sleep driver = webdriver.Remote(
command_executor='http://Linux外网地址:32768/wd/hub',
desired_capabilities={'browserName': 'chrome'}
) driver.get('https://www.baidu.com') driver.find_element_by_id("kw").send_keys("selenium grid")
driver.find_element_by_id("su").click()
sleep(2)
driver.get_screenshot_as_file("result-1.png")
driver.quit()

整个执行不过是不可见的,因为他它的运行环境在Linux;要想知道他有没有执行,可以截图验证;

* 如果执行过程中,发现报 Java 空指针异常的错误,请删除掉安装的容器和镜像文件,重新安装一次selenium/hub 和 selenium/node-chrome ;删除 请参考:停止、删除所有的docker容器和镜像

总结

  • 这是一个 cs架构的分布式测试模式,测试环境使用docker容器创建,更加稳定,减少了搭建环境带来的脚本执行出错困扰