自動化測試須要考慮到兼容性的時候,以前的作法是每一個執行機上安裝不一樣版本的瀏覽器,實際上這樣作會很浪費硬件資源,如今有了docker容器化技術,讓一切變得簡單。javascript
工具清單:html
語言:python 2.7java
虛擬機工做臺:workstations 14node
虛擬機系統:Ubuntu 16.04 LTSpython
docker:Docker version 17.03.2-cegit
自動化測試軟件:selenium web
虛擬機鏈接工具:xshellchrome
node鏈接器:vnc viewerdocker
一、安裝Ubuntu系統shell
首先安裝一臺Ubuntu系統的服務器,能夠在workstations裏面建立一個虛擬機,具體百度一下;
二、安裝docker,及獲取鏡像
虛擬機建立好了以後使用xshell鏈接,若是鏈接不上請參考個人另外一篇文章:https://www.cnblogs.com/gcgc/p/9849331.html
2.1 安裝docker
2.2 獲取鏡像
分別執行下面三行命令,這次咱們須要3個鏡像(1個Hub,2個Node),同時爲了能夠直觀的看到實驗結果,決定選用自帶VNC Server的debug版本
docker pull selenium/hub docker pull selenium/node-firefox-debug docker pull selenium/node-chrome-debug
若是從官方倉庫獲取慢的話(經測試早上獲取速度還能夠),可使用docker中國的官方鏡像加速,
docker pull registry.docker-cn.com/selenium/hub
或者使用網易的加速器
新版的 Docker 使用 /etc/docker/daemon.json(Linux) 或者 %programdata%\docker\config\daemon.json(Windows) 來配置 Daemon。
請在該配置文件中加入(沒有該文件的話,請先建一個):
{ "registry-mirrors": ["http://hub-mirror.c.163.com"] }
三、 使用鏡像建立容器
格式爲:docker run 參數 鏡像名
docker run -d -p 5555:4444 --name selenium_hub registry.docker-cn.com/selenium/hub
docker run -d -p 5900:5900 --link selenium_hub:hub --name chrome_node selenium/node-chrome-debug
docker run -d -p 5901:5901 --link selenium_hub:hub --name firefox_node selenium/node-firefox-debug
:
表示新啓動的 container 能經過內部網絡與selenium_hub:hub 這個container 進行鏈接,即 node 能與 hub 創建網絡通信;
chen@ubuntu:~$ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES a3110167a391 selenium/node-chrome-debug "/opt/bin/entry_po..." About an hour ago Up About an hour 0.0.0.0:5902->5900/tcp chrome_node b230ed926f09 selenium/node-firefox-debug "/opt/bin/entry_po..." About an hour ago Up About an hour 0.0.0.0:5901->5900/tcp agitated_jepsen ac2bd2b8912f registry.docker-cn.com/selenium/hub "/opt/bin/entry_po..." 24 hours ago Up About an hour 0.0.0.0:5555->4444/tcp selenium_hub
出現這個頁面就表明成功鏈接了
編寫腳本測試一下
#coding=utf-8 from selenium import webdriver
firefox_capabilities ={ "browserName": "firefox", "version": "62.0.3",#注意版本號必定要寫對 "platform": "ANY", "javascriptEnabled": True, "marionette": True, } browser=webdriver.Remote("http://192.168.179.128:5555/wd/hub",desired_capabilities=firefox_capabilities)#注意端口號5555是咱們上文中映射的宿主機端口號 browser.get("http://www.baidu.com") browser.find_element_by_id('kw').send_keys('docker') browser.get_screenshot_as_file("D:/baidu.png") browser.close()
上面firefox_capabilities參數來自於grid/console這裏:
運行腳本後,能夠在VNC中實時看到運行界面
遺留問題:假如須要在不一樣版本的firefox瀏覽器上去運行腳本,測試腳本該怎麼寫,不一樣火狐版本的鏡像怎麼獲取,