Docker學習10-docker-slenium進行web自動化測試
阿新 • • 發佈:2020-07-04
前言
實際上是 docker 中部署一個 Selenium Grid,它用於分散式自動化測試,就是一套Selenium 程式碼可在不同的環境上執行。
Selenium Grid 又分為:
hub :主節點,它首先根據你的程式碼來識別分配到哪個node節點去執行;
node:分支節點,由主hub主節點分配給本地/遠端node來執行測試用例。
環境準備:
- centos
- docker
- python3 + selenium 等庫
一、docker-selenium搭建
由於廣深小龍不喜歡先pull一個映象下來,我是直接run起來。
1、docker 安裝 主節點 selenium/hub:
sudodocker run -dp 4444:4444 --name selenium-hub selenium/hub
-d:掛後臺執行
-p:對映ip
2、docker 安裝 分支節點selenium/node-chrome:
當然還有debug版本、Firefox版本的分支節點,這裡說chrome。瞭解更多:https://hub.docker.com/search?q=selenium%2Fnode-&type=image
sudo docker run -d --link selenium-hub:hub 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