zalenium是一個Selenium Grid擴展,用Docker容器動態擴展你的本地網格。它使用docker-selenium在本地運行Firefox和Chrome中的測試,如果需要不同的瀏覽器,你的測試可以重定向到雲測試提供商(Sauce Labs,BrowserStack,TestingBot)。 Zalenium也可以在Kubernetes中使用。
繁雜的問題:
- 有一個穩定的網格來運行Selenium的UI測試
- 隨着時間的推移保持它(跟上新的瀏覽器,Selenium和驅動程序版本)
- 提供涵蓋所有瀏覽器和平台的功能
這就是為什么開發zalenium的原因,在需求中創建了docker-selenium節點。在Firefox和Chrome中進行的UI測試將運行得更快,因為它們在本地網格上運行,在從頭開始創建並在測試完成后處理的節點上運行。
如果需要docker-selenium無法實現的功能,測試會重定向到雲測試提供程序(Sauce Labs,BrowserStack,TestingBot)。
Zalenium的主要目標是:允許任何人擁有一次性和靈活的Selenium Grid基礎設施。
### zalenium的由來
由Zalando和Selenium兩個單詞組成。如前所述,這個項目的目的是提供一個簡單的方法來創建一個Grid,並服務於Selenium社區。不過,這不是一個正式的Selenium項目。
注:Zalando只是一個電商平台。Zalenium由該平台的研發團隊開發與維護。
### 安裝
如果你從未安裝和使用過Docker ,請參考 Docker教程
1、安裝Docker Engin,版本 > = 1.11.1(可能適用於早期版本,尚未測試)。
2、docker daemon 正在運行(例如,docker info可以正常工作)。
3、拉取 docker-selenium鏡像。
$ sudo docker pull elgalu/selenium
注:這里拉取的是非官方的docker-selenium鏡像。
4、拉取zalenium鏡像。
$ sudo docker pull dosel/zalenium
速度太慢,可以使用國內鏡像:
https://www.docker-cn.com/registry-mirror
查看鏡像:
$ sudo docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
elgalu/selenium latest 9d39de56e57b 3 days ago 1.4GB
dosel/zalenium latest e5a39a962b2c 8 days ago 746MB
### 運行
Zalenium使用docker來按需擴展,因此我們需要為docker.sock提供完全的訪問權限,這就是所謂的“Docker alongside docker”。
docker run --rm -ti --name zalenium -p 4444:4444 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v /tmp/videos:/home/seluser/videos \
--privileged dosel/zalenium start
--privileged 為可選項,建議運行zalenium的privileged參數,通過Haveged增加熵(entropy)水平節點注冊過程的速度。因為它可以提高性能。
准備測試腳本
grid_demo.py
from selenium import webdriver
from time import sleep
driver = webdriver.Remote(
command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities={'browserName': 'chrome'})
driver.get('https://www.baidu.com')
driver.find_element_by_id("kw").send_keys("docker selenium")
driver.find_element_by_id("su").click()
sleep(1)
driver.quit()
現在可以運行測試了,通過 http://localhost:4444/wd/hub 主節點。
$ python3 grid_demo.py
### 附加屬性
相比於官方的docker-selenium,zalenium最直觀的感受的就在此處。
通過瀏覽器后台執行Selenium總有一種不安全的感覺,zalenium可以將腳本的執行錄制成視頻,供你回放觀看。不過,我這里提示:“沒有找到支持的視頻格式和MIME類型”也許是因為我的Ubuntu沒有安裝視頻播放器。好在還有Logs可以查看。
視頻錄制,默認在/tmp/videos文件夾可以找到保存的視頻。
當運行測試腳本的過程中,可以通過該頁面觀看腳本的執行過程,這功能還是666的。
更多用法: