准备:
#请在此之前先了解,selenium grid ;参考:selenium-grid ,下载地址,win-本地部署过程
>>>环境准备: Linux操作系统
>>>给Linux安装Python(linux 默认已经安装)
>>>安装docker参考Ubuntu安装docker步骤,安装完毕后检验,安装是否正确
>>>docker search selenium 命令查看需要安装的selenium包 ;目前只支持Chrome 和 Firefox两种浏览器
>>>下载主 hub 对象: sudo docker pull selenium/hub
>>>下载主node - Chrome 镜像 :sudo docker pull selenium/node-chrome
>>>下载完成后查看镜像:sudo docker images
>>>启动主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/hub 容器的端口号为 4444
,对Ubuntu映射的端口为 32768
,前面通过 -P
参数自动分配
>>> OK!环境搭建至此结束。使用 http://Linux外网地址:32768/grid/console ; 查看环境
>>> 运行本地的测试脚本;
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容器创建,更加稳定,减少了搭建环境带来的脚本执行出错困扰