Python+Selenium筆記(十一):配置selenium Grid,pythonselenium

來源:互聯網
上載者:User

Python+Selenium筆記(十一):配置selenium Grid,pythonselenium

(一) 前言

Selenium Grid可以將測試分布在若干個物理或虛擬機器上,從而實現分布方式或並行方式執行測試。

這個連結是官方的相關說明。

https://github.com/SeleniumHQ/selenium/wiki/Grid2

(二) Selenium Grid

大概就是這個意思(一個中心節點(HUB),N個子節點(NODE,作業系統+瀏覽器))

 

 

(三) 環境配置

1. 前提:已經配置相應的 JDK環境(LINUX內建JDK環境(我裝的LINUX內建的是1.8),WINDOWS要自己配置JDK環境(我裝的是1.9))

2. https://docs.seleniumhq.org/download/ 下載 Selenium Standalone Server

 

3. 啟動Selenium Grid server(hub)

Selenium Grid server(hub,也就是存放代碼的那台電腦),切換到Selenium Standalone所在的目錄(直接在Selenium Standalone所在的檔案夾shift+滑鼠右鍵,選擇在此處開啟命令視窗,或者CD 路徑),然後執行下面的命令

java -jar selenium-server-standalone-<version>.jar -role hub
例如:java -jar selenium-server-standalone-3.9.1.jar -role hub
可以加 -port 指定連接埠號碼,預設4444
http://localhost:4444/grid/console 啟動後用這個地址訪問

4. 配置node(節點)

(1)   Node(也就是其他電腦或虛擬機器環境,也可以直接將hub所在的那台電腦添加為node),在系統變數path中加上相應的驅動檔案的路徑。(例如:將chromedriver所在的路徑添加到path中,之前已經說過Firefox、IE、Google瀏覽器環境的配置)

(2)   執行下面的命令

java -jar selenium-server-standalone-3.9.1.jar -role node -browser "browserName=firefox,version=62,maxSession=3,platform=WINDOWS" -hub http://192.168.4.196:4444/grid/register -port 5555

說明:

browserName:瀏覽器名稱

Version:瀏覽器版本

maxSession:支援並發瀏覽器執行個體的數量

platform:作業系統

-hub:http:// (Selenium Grid server(hub)的IP)+啟動時設定的連接埠號碼/ grid/register

-port :指定連接埠號碼

(3)   要在同一電腦(或虛擬機器)添加其他節點,再開啟一個CMD視窗,運行上面的命令就行了(記得修改瀏覽器資訊),記得同一電腦上連接埠號碼別重複。

(四) 環境配置好後如所示(我電腦開著一個linux的虛擬機器太卡了,有點浪費時間的感覺,不想弄了,不過應該和windows上的差距不會太大,有環境的可以試下添加path變數、在終端執行相關命令添加節點)

 

(五) 樣本(運行指令碼會發現,直接在相匹配的環境中運行測試)

 1 import sys 2 import unittest 3 from selenium import webdriver 4 from selenium.webdriver.common.action_chains import ActionChains 5 class SearchTest(unittest.TestCase): 6     #定義2個全域屬性,沒有外部參數時,使用預設值 7     PLATFORM = "WINDOWS" 8     BROWSER = "firefox" 9     @classmethod10     def setUpClass(cls):11         #設定作業系統和瀏覽器12         desired_caps = {}13         desired_caps['platform'] = cls.PLATFORM14         desired_caps['browserName'] = cls.BROWSER15         #這裡的IP就是HUB所在電腦的ip16         cls.driver = webdriver.Remote('http://192.168.3.2:4444/wd/hub',desired_caps)17         cls.driver.implicitly_wait(10)18         cls.driver.maximize_window()19         cls.driver.get("https://www.cnblogs.com/")20         21     def test_search_by_look(self):22         seach_class = self.driver.find_element_by_xpath('//li/a[@href="/cate/2/"]')23         #定位程式設計語言下的小類Python24         seach_small =self.driver.find_element_by_xpath('//li/a[@href="/cate/python/"]')25         ActionChains(self.driver).move_to_element(seach_class).perform()26         seach_small.click()27         #檢查開啟的網頁標題是不是 Python - 網站分類 - 部落格園28         self.assertEqual(self.driver.title,"Python - 網站分類 - 部落格園" )29 30     @classmethod31     def tearDownClass(cls):32         cls.driver.quit()33 34 if __name__ == '__main__':35     #使用命令列運行指令碼時,如果添加了參數,PLATFORM和BROWSER使用外部參數36     if len(sys.argv)>1:37         SearchTest.PLATFORM = sys.argv.pop()38         SearchTest.BROWSER = sys.argv.pop()39     #加verbosity=2參數,在命令列中顯示具體的測試方法40     unittest.main(verbosity=2)

(六) 未解決的問題(單單配置環境是不夠的)

1、 實現多環境並行運行同一測試指令碼

2、 實現同一指令碼在不同環境中並行運行

 

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.