Docker学习10-docker-slenium进行web自动化测试

前言

实际上是 docker 中部署一个 Selenium Grid,它用于分布式自动化测试,就是一套Selenium 代码可在不同的环境上运行。

Selenium Grid 又分为:

hub :主节点,它首先根据你的代码来识别分配到哪个node节点去运行;

node:分支节点,由主hub主节点分配给本地/远程node来运行测试用例。

环境准备:

  • centos
  • docker
  • python3 + selenium 等库

一、docker-selenium搭建

由于广深小龙不喜欢先pull一个镜像下来,我是直接run起来。

1、docker 安装 主节点 selenium/hub:

sudo docker run -d -p 4444:4444 -e GRID_MAX_SESSION=200 --restart=always --name hub selenium/hub

-d:挂后台运行

-p:映射ip

-e:GRID_MAX_SESSION=200

2、docker 安装 分支节点 selenium/node-chrome:

当然还有debug版本、Firefox版本的分支节点,这里说chrome。了解更多:https://hub.docker.com/search?q=selenium%2Fnode-&type=image

sudo docker run -d -e NODE_MAX_INSTANCES=100 -e NODE_MAX_SESSION=100 --shm-size=5g --link hub:hub --name node selenium/node-chrome

以上步骤喝杯茶,等待一下下载完成后就会直接run起来。

3、run起来后,输入:docker ps

[root@iZbp19lugf22zbsubsf1y6Z ~]# docker ps
CONTAINER ID        IMAGE                     COMMAND                  CREATED             STATUS                PORTS                                              NAMES
d33303b6a7fe        selenium/hub              "/opt/bin/entry_poin…"   2 days ago          Up 2 days             0.0.0.0:4444->4444/tcp                             selenium-hub
ff03e232af44        selenium/node-chrome      "/opt/bin/entry_poin…"   2 days ago          Up 2 days                                                                vigorous_agnesi

可以看到这两个镜像在运行着,接下来我们调试脚本。

二、调试脚本

由于当时项目需求,我将脚本放置服务器上试运行。大概是:docker + docker-selenium + jenkins + python3 + pytest

pytest的优点、插件都太多了,如分布式、前置后置,自定义顺序执行用例,漂亮报告等等

1、测试脚本如下:

这里需要注意更改你的服务器主机ip,端口对应主节点的映射端口。

from selenium import webdriver
import time

driver = webdriver.Remote(
command_executor='http://你的服务器主机ip:4444/wd/hub',
desired_capabilities={'browserName': 'chrome'}
)

driver.get('https://www.cnblogs.com/gsxl/')
print("get 广深小龙 博客园")

text = driver.find_element_by_id("Header1_HeaderTitle").text
driver.find_element_by_id("Header1_HeaderTitle").click()
print(text)
time.sleep(1)

driver.quit()
print("运行完毕,即将关闭...")

运行结果:

[root@iZbp19lugf22zbsubsf1y6Z ~]# python3 test.py 
get 广深小龙 博客园
广深-小龙 --扬帆起航!
运行完毕,即将关闭...
[root@iZbp19lugf22zbsubsf1y6Z ~]# 

如果在容器外部可以使用服务器本地ip,容器内部需要使用服务器主机ip,既是公网ip。

这样调试后我们便可以通过 jenkins 持续集成进行测试了。

欢迎来大家QQ交流群一起学习:482713805

原文地址:https://www.cnblogs.com/gsxl/p/13233740.html