【軟件測試】Selenium Grid2之跨瀏覽器遠程測試(一)

跨瀏覽器執行測試適用場景:

不同平臺(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語言爲例爲大家展示!

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章