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

来源:https://www.cnblogs.com/simple-free/archive/2018/02/25/8468480.html
-Advertisement-
Play Games

(一) 前言 Selenium Grid可以將測試分佈在若幹個物理或虛擬機器上,從而實現分佈方式或並行方式執行測試。 這個鏈接是官方的相關說明。 https://github.com/SeleniumHQ/selenium/wiki/Grid2 (二) Selenium Grid 大概就是這個意思( ...


(一) 前言

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中,之前已經說過火狐、IE、谷歌瀏覽器環境的配置)

(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     @classmethod
10     def setUpClass(cls):
11         #設置操作系統和瀏覽器
12         desired_caps = {}
13         desired_caps['platform'] = cls.PLATFORM
14         desired_caps['browserName'] = cls.BROWSER
15         #這裡的IP就是HUB所在電腦的ip
16         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         #定位編程語言下的小類Python
24         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     @classmethod
31     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、 實現多個測試腳本並行運行(例如幾百個測試腳本要是一個個運行的話,要用很長時間)

 


您的分享是我們最大的動力!

-Advertisement-
Play Games
更多相關文章
  • 前一段時間做了一個小項目,時間比較緊,就一個人月。最終希望能夠通過微信公眾號鏈接啟動應用。 項目的業務細節就不多說了,主要是想分享一下做這個項目技術方面的一些經驗。 技術選型 參考範圍大致三種:AngularJS,Angular,React。 這裡可能會有些困惑,AngularJS和Angular不 ...
  • 轉載自mini_fan博客園: 今天想在Angular項目中使用jQuery的this功能,發現undefined。代碼如下: HTML部分: Js部分: 提示信息:ReferenceError $ is not defined 問題分析: 在angularJs中,this指向$scope!可以$e ...
  • 一、服務 服務提供了一種能在應用的整改生命周期內保持數據的方法,它能夠在控制器之間進行通信,並保持數據的一致性。 1.服務是一個單例對象,在每個應用中只會被實例化一次(被$injector); 2.服務提供了把與特定功能相關連的方法集中在一起的介面,實際中用於封裝通用方法,請求後臺數據,處理數據返回 ...
  • 一、控制器 首先列出幾種我們平常使用控制器時的幾種誤區: 我們知道angualrJs中一個控制器時可以對應不同的視圖模板的,但這種實現方式存在的問題是: 如果視圖1和視圖2根本沒有任何邏輯關係,這樣“控制器”的角色就會很尷尬,因為我們不可能把不同業務的數據模型都綁在同一個控制器中。 這種實現方式也存 ...
  • 一、什麼是反向代理?反向代理的作用? 反向代理(Reverse Proxy)方式是指以代理伺服器來接受internet上的連接請求,然後將請求轉發給內部網路上的伺服器,並將從伺服器上得到的結果返回給internet上請求連接的客戶端,此時代理伺服器對外就表現為一個反向代理伺服器。 當外部客戶機嘗試訪 ...
  • https://files.cnblogs.com/files/tewuapple/mapreduce-osdi04.pdf ...
  • Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 65536/32768 K (Java/Others)Total Submission(s): 8509 Accepted Submission(s): 4833 Problem Descrip ...
  • 1185 威佐夫游戲 V2 基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題 收藏 關註 1185 威佐夫游戲 V2 基準時間限制:1 秒 空間限制:131072 KB 分值: 0 難度:基礎題 1185 威佐夫游戲 V2 基準時間限制:1 秒 空間限制:131072 K ...
一周排行
    -Advertisement-
    Play Games
  • 移動開發(一):使用.NET MAUI開發第一個安卓APP 對於工作多年的C#程式員來說,近來想嘗試開發一款安卓APP,考慮了很久最終選擇使用.NET MAUI這個微軟官方的框架來嘗試體驗開發安卓APP,畢竟是使用Visual Studio開發工具,使用起來也比較的順手,結合微軟官方的教程進行了安卓 ...
  • 前言 QuestPDF 是一個開源 .NET 庫,用於生成 PDF 文檔。使用了C# Fluent API方式可簡化開發、減少錯誤並提高工作效率。利用它可以輕鬆生成 PDF 報告、發票、導出文件等。 項目介紹 QuestPDF 是一個革命性的開源 .NET 庫,它徹底改變了我們生成 PDF 文檔的方 ...
  • 項目地址 項目後端地址: https://github.com/ZyPLJ/ZYTteeHole 項目前端頁面地址: ZyPLJ/TreeHoleVue (github.com) https://github.com/ZyPLJ/TreeHoleVue 目前項目測試訪問地址: http://tree ...
  • 話不多說,直接開乾 一.下載 1.官方鏈接下載: https://www.microsoft.com/zh-cn/sql-server/sql-server-downloads 2.在下載目錄中找到下麵這個小的安裝包 SQL2022-SSEI-Dev.exe,運行開始下載SQL server; 二. ...
  • 前言 隨著物聯網(IoT)技術的迅猛發展,MQTT(消息隊列遙測傳輸)協議憑藉其輕量級和高效性,已成為眾多物聯網應用的首選通信標準。 MQTTnet 作為一個高性能的 .NET 開源庫,為 .NET 平臺上的 MQTT 客戶端與伺服器開發提供了強大的支持。 本文將全面介紹 MQTTnet 的核心功能 ...
  • Serilog支持多種接收器用於日誌存儲,增強器用於添加屬性,LogContext管理動態屬性,支持多種輸出格式包括純文本、JSON及ExpressionTemplate。還提供了自定義格式化選項,適用於不同需求。 ...
  • 目錄簡介獲取 HTML 文檔解析 HTML 文檔測試參考文章 簡介 動態內容網站使用 JavaScript 腳本動態檢索和渲染數據,爬取信息時需要模擬瀏覽器行為,否則獲取到的源碼基本是空的。 本文使用的爬取步驟如下: 使用 Selenium 獲取渲染後的 HTML 文檔 使用 HtmlAgility ...
  • 1.前言 什麼是熱更新 游戲或者軟體更新時,無需重新下載客戶端進行安裝,而是在應用程式啟動的情況下,在內部進行資源或者代碼更新 Unity目前常用熱更新解決方案 HybridCLR,Xlua,ILRuntime等 Unity目前常用資源管理解決方案 AssetBundles,Addressable, ...
  • 本文章主要是在C# ASP.NET Core Web API框架實現向手機發送驗證碼簡訊功能。這裡我選擇是一個互億無線簡訊驗證碼平臺,其實像阿裡雲,騰訊雲上面也可以。 首先我們先去 互億無線 https://www.ihuyi.com/api/sms.html 去註冊一個賬號 註冊完成賬號後,它會送 ...
  • 通過以下方式可以高效,並保證數據同步的可靠性 1.API設計 使用RESTful設計,確保API端點明確,並使用適當的HTTP方法(如POST用於創建,PUT用於更新)。 設計清晰的請求和響應模型,以確保客戶端能夠理解預期格式。 2.數據驗證 在伺服器端進行嚴格的數據驗證,確保接收到的數據符合預期格 ...