最新的selenium測試平台大概有這么幾個組件
Selenium Standalone Server: 用來搭建遠程測試平台以及分布式測試。
Selenium WebDriver: 最基礎的用來創建測試腳本以及用來和上面的server進行交互的客戶端的驅動。這個針對不同的開發語言有不同的版本,比如java的,python的,還有C#, Ruby, JavaScript。這個也是Selenium和其他測試工具比比較強大的地方。客戶端的腳本你可以選擇任一喜歡的語言進行實現,同一個server端都可以執行。
Selenium IDE:錄制的plugin,沒啥說的,針對不同的瀏覽器有不同的plugin.可以錄制回放,編輯,等等,功能相對webdriver比較弱。值得說的是Selenium IDE也有導出功能,最新版本3.6.0的Firefox上,目前只支持導出Java代碼,后續會有其他的代碼吧,比較雞肋,估計支持比較晚。
ThirdParty Driver:這個是用來連接webdriver腳本和瀏覽器的。比如Firefox上的是Gecko.作用是提供webdriver的HTTP API用於和瀏覽器通信。最直接的作用就是沒有它,你就無法啟動瀏覽器,更別說其他功能。相當於是用來執行webdriver上的API操作到瀏覽器里。這是一個exe文件。
搭建分布式測試有這些好處:
1. 可以把測試用例分發到不同的機器上,並行運行。這樣可以節省大量的時間。
2. 可以搭建不同的測試平台,比如Linux, windows,還有不同的瀏覽器平台。
3. 就我測試的經驗看,有些測試用例必須使用多個機器一起才能實現。比如多用戶在線審批流程。
4. 分布式的多並發的測試平台也是一種對系統的壓力測試過程,有些問題在單個機器上不會出現,但是多平台一起運行,就會有。
Standalone Server里面有兩個基本角色, 這個和交換機非常相似
1. Hub: 類似交換機,拿到client requesit,然后分發
2. Node: 客戶端,提交request.
Server搭建有這么幾個步驟, server需要機器上已經安裝好了java,因為這是一個jar package.
1. 下載selenium-server-standalone-4.0.0-alpha-1.jar.
2. 然后java 啟動執行。這里都使用默認值
java -jar selenium-server-standalone-4.0.0-alpha-1.jar -role hub
可以在瀏覽器訪問http://localhost:4444/grid/console
2.把client server加入到hub 里面
1. 下載selenium-server-standalone-4.0.0-alpha-1.jar.
2. 然后java 啟動執行。這里都使用默認值
java -jar selenium-server-standalone-4.0.0-alpha-1.jar -role node -hub http://localhost:4444/grid/register
刷新下剛才的http://localhost:4444/grid/console 就能看見Node已經加進去了, 最簡單的Grid就搭建完畢了。
使用Grid運行測試用例(python代碼)
from selenium import webdriver from selenium.webdriver.common.desired_capabilities import DesiredCapabilities driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.CHROME) driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.OPERA) driver = webdriver.Remote( command_executor='http://127.0.0.1:4444/wd/hub', desired_capabilities=DesiredCapabilities.HTMLUNITWITHJS)
配置Node以及Hub
有兩種方式可以配置Node
1. 使用命令行方式
2. 使用JSON文件
具體的參看下面的link
來源參考https://github.com/SeleniumHQ/selenium/wiki/Grid2