使用Docker部署Selenium Grid服務


在編寫調試腳本時一般采用本機上的Selenium環境。在執行用例和協作時,則需要我們部署Selenium服務,使用專門的Selenium服務來執行用例。

使用Selenium Grid

部署Selenium服務一般采用Selenium Grid的方式。Selenium Grid采用Hub/Node的模式,一個集中服務Hub,連接多個擁有瀏覽器的執行Node節點。
如下圖。

使用Selenium Grid搭建Selenium服務的方式如下。

  1. 下載Selenium Server: https://www.selenium.dev/downloads/

    下載下來是一個名為selenium-server-standalone-3.141.59.jar的jar包
  2. 啟動主控服務-Hub
    使用以下命令啟動Hub節點
java -jar selenium-server-standalone-3.141.59.jar -role hub -port 5566

訪問Grid Console http://localhost:5566/grid/console

  1. 注冊執行節點-Node
java -jar selenium-server-standalone-3.141.59.jar -role node -hub http://localhost:5566/grid/register/ -port 5577

如果執行節點和Hub節點不知一台機器,則需要把localhost改為Hub節點的ip地址。
再次訪問Grid Console 就可以看到注冊的節點和節點所擁有的瀏覽器。

使用Selenium Grid服務需要使用webdriver.Remote方法連接服務,並傳入desired_capbilities 期望的能力。示例腳本如下。

from selenium import webdriver
import time

caps = {
    'platform': 'ANY',
    'browserName': 'chrome',
    'version': '',
}
dr = webdriver.Remote('http://localhost:5555/wd/hub', desired_capabilities=caps)
dr.get('https://www.baidu.com')
print(dr.title)
dr.quit()

運行腳本,此時Hub就會選擇一個滿足你要求的節點執行。

使用Docker版Selenium

執行Node服務,一般都會采用Linux系統如Centos或Ubuntu,大部分情況是無界面的,那就不方便安裝有界面的Chrome瀏覽器,雖然有一些解決方法或使用Chrome的Headless模式。
然而定位問題等也非常不方便,因此推薦使用Docker的方式不是Selenium Grid + Node服務,操作方式如下。

  1. 安裝Docker
  1. 下載鏡像
docker pull selenium/hub
docker pull selenium/node-firefox
docker pull selenium/node-chrome

注意:selenium/node-firefoxselenium/node-chrome都是無界面的。
要想能看到實時運行界面,需要使用以下兩個鏡像之一。

docker pull selenium/standalone-chrome-debug
docker pull selenium/standalone-firefox-debug
  1. 啟動Hub節點的Docker
docker run -p 5555:4444 -d --name hub selenium/hub
  1. 啟動Node節點的Docker
docker run -P -d --link hub:hub --name firefox selenium/node-firefox
docker run -P -d --link hub:hub --name chrome selenium/node-chrome

或帶Debug界面的Node節點

docker run -d -p 5900:5900 --link hub:hub selenium/node-chrome-debug

如果想要查看實時運行界面,需要使用vnc viewer, 配置如圖:

使用zelenium

zelenium同樣是基於Selenium Grid的Docker鏡像,優點是集成了運行日志和錄像功能,非常方便易用。
操作方式參考 Zelenium的初步使用

參考: https://blog.csdn.net/lb245557472/article/details/91966770
https://www.cnblogs.com/nanaheidebk/p/10109013.html


免責聲明!

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



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