在編寫調試腳本時一般采用本機上的Selenium環境。在執行用例和協作時,則需要我們部署Selenium服務,使用專門的Selenium服務來執行用例。
使用Selenium Grid
部署Selenium服務一般采用Selenium Grid的方式。Selenium Grid采用Hub/Node的模式,一個集中服務Hub,連接多個擁有瀏覽器的執行Node節點。
如下圖。
使用Selenium Grid搭建Selenium服務的方式如下。
- 下載Selenium Server: https://www.selenium.dev/downloads/
下載下來是一個名為selenium-server-standalone-3.141.59.jar的jar包 - 啟動主控服務-Hub
使用以下命令啟動Hub節點
java -jar selenium-server-standalone-3.141.59.jar -role hub -port 5566
訪問Grid Console http://localhost:5566/grid/console
- 注冊執行節點-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服務,操作方式如下。
- 安裝Docker
- 下載鏡像
docker pull selenium/hub
docker pull selenium/node-firefox
docker pull selenium/node-chrome
注意:selenium/node-firefox
和selenium/node-chrome
都是無界面的。
要想能看到實時運行界面,需要使用以下兩個鏡像之一。
docker pull selenium/standalone-chrome-debug
docker pull selenium/standalone-firefox-debug
- 啟動Hub節點的Docker
docker run -p 5555:4444 -d --name hub selenium/hub
- 啟動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