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


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM