跨瀏覽器執行測試適用場景:
不同平臺(Windows,Mac等),不同瀏覽器(firefox,ie,chrome等)執行測試,主要用於測試web產品的兼容性
遠程執行測試適用場景:
並行執行測試腳本,從而縮短測試總耗時
測試環境搭建:
要使用Grid2,需要下載selenium-server-standalone,可在我的資源裏下載,下載地址:https://download.csdn.net/download/guaishounan/11223649,其次,我們需要保證電腦有java環境(jdk的安裝比較簡單,這裏不做介紹,讀者可自行百度),這樣才能去啓動hub和node!
1.啓動hub:
下載完成後,cmd命令行切換到selenium-server-standalone所在位置,執行命令java -jar selenium-server-standalone-3.141.59.jar -role hub啓動hub,hub主要用來管理各個代理節點的註冊和狀態信息,並且接受遠程客戶端代碼的請求調用,然後把請求的命令再轉發給代理節點來執行。
2.啓動node節點:
啓動ie瀏覽器節點cmd命令行示例:
java -Dwebdriver.ie.driver="D:\IEDriverServer.64.exe" -jar D:\selenium-server-standalone-3.141.59.jar -role webdriver -browser "browserName=internet explorer,version=11,maxinstance=1,platform=WINDOWS" -hubHost localhost -port 5555,其它瀏覽器節點的啓動方式與此類似,只需要更改瀏覽器驅動的名稱,瀏覽器名稱,瀏覽器版本和運行平臺,端口號等即可
3.監控節點:
啓動hub和node後,在瀏覽器輸入 http://"hub的ip":"hub的端口,默認爲4444"/grid/console,顯示如下畫面,表示hub和node啓動成功:
4.編寫測試腳本,以python爲例,測試在不同的瀏覽器上使用百度搜索筆者的博客:
import sys
import time
import warnings
from selenium import webdriver
import unittest
class SearchBaidu(unittest.TestCase):
PLATFORM = 'WINDOWS'
BROWSER = 'internet explorer'#當用戶在命令行無輸入時使用的默認瀏覽器
#BROWSER = 'firefox'
# BROWSER = 'chrome'
# BROWSER = 'MicrosoftEdge'
def setUp(self):
warnings.filterwarnings("ignore")
desired_caps = {}
desired_caps['platform'] = self.PLATFORM
desired_caps['browserName'] = self.BROWSER
try:
wd = webdriver.Remote(command_executor='http://192.168.1.168:4444/wd/hub', desired_capabilities=desired_caps)
self.wd = wd
except:
wd = self.wd
wd.quit()
def testSearchBaidu(self):
try:
wd = self.wd
wd.get("https://www.baidu.com")
wd.implicitly_wait(5)
wd.maximize_window()
time.sleep(2)
wd.find_element_by_id("kw").send_keys("guaishounan的博客")
wd.find_element_by_id("su").click()
except:
wd = self.wd
wd.quit()
def tearDown(self):
wd = self.wd
time.sleep(3)
wd.quit()
if __name__ == '__main__':
if len(sys.argv) > 1:
SearchBaidu.BROWSER = sys.argv.pop()
SearchBaidu.PLATFORM = sys.argv.pop()
unittest.main(verbosity=2)
5.切換到測試腳本所在位置,cmd命令行傳入對應的平臺名稱和瀏覽器名稱執行測試:
執行結果如圖所示:
以上就是遠程跨瀏覽器測試的一個簡單實現,細心的讀者應該會發現,測試腳本的健壯性很差!比如我忘記輸測試平臺的名稱或者瀏覽器名稱輸錯,就會導致異常發生,測試無法執行,如下圖所示:
因此,我們需要在測試腳本中加入判斷和異常處理,提高測試腳本的健壯性,具體實現我會在接下來的博文裏以java語言爲例爲大家展示!