Linux+Python+Selenium Grid構建可視化分布式自動化測試環境

2021-02-13 Python大本營

來源 | python爬蟲人工智慧大數據(ID:pylearn)我們在做爬蟲,或者自動化測試的時候,經常需要用到Selenium,這個框架大家也都不陌生,相信用過的朋友, 大部分肯定都知道在Windows下不管做UI自動化測試還是做爬蟲元素提取,都是非常方便的,比如看下面的代碼,是一個最基本的在Windows下操控Chrome瀏覽器打開網頁的代碼

from selenium import webdriver
driver = webdriver.Chrome(executable_path='C:\\chrome\\chromedriver246.exe')
driver.get("http://www.baidu.com")

問題來了,這段代碼假如我放到我的Linux伺服器上,是否還能夠正常打開我Windows電腦的Chrome瀏覽器並打開網頁?想想也很容易明白,肯定控制不了Windows電腦,更不用說瀏覽器網頁了,那如果我的腳本放伺服器想跑的話,第一種解決方案就是用無頭瀏覽器,這個不多說,導入無頭瀏覽器相關的包就行,可以實現無界面操作,不過我這裡提兩個需求,看大家是否知道有什麼解決方案:需求一:Linux下跑自動化腳本,想在Windows看帶界面的執行過程,該怎麼做?需求二:假如我有一個需要做UI自動化測試的模塊,自動化測試腳本也放在Linux上,並且這個模塊會由多個測試人員來進行測試,那麼我伺服器的腳本如何能根據不同測試人員的電腦Ip來控制他們Windows下的Chrome瀏覽器?首先看一幅草圖,想實現上面的兩個需求,下面的圖形要先看明白,其實也很直觀,Linux的hub管理中心,發送驅動指令到對應的IP,去找對應Ip的電腦上的Chrome驅動(node) 去打開瀏覽器,進行自動化操作Selenium Ggrid可以同時在不同機器上測試不同瀏覽器,包含一個hub和多個node。node會發送配置信息到hub,hub記錄並跟蹤每一個node的配置信息,同時hub會接受到即將被執行的測試用例及其相關信息,並通過這些信息自動選擇可用的且符合瀏覽器與平臺搭配要求的node,node被選中後,測試用例所調用的selenium命令就會被發送到hub,hub再將這些命令發送到指定給該測試用例的node,之後由node執行測試。2、selenium-server-standalone-3.8.1.jar2、selenium-server-standalone-3.8.1.jar1、selenium-server-standalone版本一定要和selenium版本匹配,必須都是3版本或者都是2版本,不能一個2一個3,2、chromedriver和jar包放同一目錄!!!(這地方踩過坑,格外注意)1、首先啟動Linux伺服器上的selenium grid服務,需要切換到selenium-server-standalone-3.81.jar所在目錄
java -jar selenium-server-standalone-3.8.1.jar -role hub -port 4455這裡Hub端開啟了4455埠,用來接收node連接信息,啟動成功提示:Registered a node http://10.21.104.88:44552、切換到Windows裡面的selenium-server-standalone-v3.0.1.jar所在目錄
java -jar selenium-server-standalone-3.8.1.jar -role node -port 4455 -hub http://10.21.104.88:4455/grid/register(ip為Linux伺服器ip)啟動成功提示:The node is registered to the hub and ready to use連接成功的話瀏覽器打開:http://10.21.104.88:4455/grid/console可以查看連接hub的node信息,有瀏覽器版本號,表明連接成功,我這裡有兩臺電腦都連了hub好了,當我們把繁瑣的環境配置好後,並且hub和node命令也都開啟並成功建立了連接,我們就可以編寫腳本代碼了,下方是腳本代碼,在本地我們之前用webdriver.Chrome即可,現在在伺服器上,我們通過webdriver.Remote來創建driver對象,執行這個python文件,即可打開Windows的Chrome瀏覽器。

from selenium import webdriver



desired_capabilities={'browserName': 'chrome',
'version': '',
'platform': 'ANY',
'javascriptEnabled': True,
'webdriver.chrome.driver': 'C:\\chrome\\chromedriver246.exe' 
}


driver = webdriver.Remote('http://10.20.57.160:4455/wd/hub',desired_capabilities=desired_capabilities)
driver.get("http://www.baidu.com")

selenium grid通過上述方式即可實現文章開頭所說的兩個需求,Linux腳本控制Windows瀏覽器,以及根據不同的IP,控制不同的Windows下的瀏覽器,另外你在測試過程中,肯定還會遇到很多問題,這是學習新知識的必經階段,歡迎留言探討。(*本文為 Python大本營轉載文章,轉載請聯繫原作者)掃碼添加小助手,回覆:大會,加入2019 AI開發者大會福利群,每周一、三、五更新技術福利,還有不定期的抽獎活動~

僅限今日!2019 AI開發者大會「七夕」限時雙人特惠票搶購中~是不是和男(女)朋友購票不重要啦,兩人組隊即享優惠~


目前大會重磅嘉賓更新中:阿里、華為、Google Brain、Amazon、微軟中國、百度、京東、小米、快手、科大訊飛、商湯、曠視、圖森、雲知聲、思必馳...「硬核AI技術大會,一年參加一次就夠了」。掃碼查看更多嘉賓和大會信息。

相關焦點

  • linux+python+selenium grid構建可視化分布式自動化測試環境
    我們在做爬蟲,或者自動化測試的時候,經常需要用到selenium,這個框架大家也都不陌生,相信用過的朋友, 大部分肯定都知道在Windows下不管做UI
  • Docker+Selenium Grid+Python搭建分布式測試環境
    於是搭建了一個分布式的測試環境來試試。  主要使用到的東西:  語言:python3.5  web自動化:selenium3.7  應用容器引擎:Docker 1.12  作業系統:CentOS 7  當一個場景在單個瀏覽器上可以運行後,就需要考慮是否可以同時測試下兼容性,之前已經有一篇文章介紹了利用Selenium Grid
  • 基於Selenium Grid搭建傳統的自動化並行執行環境
    什麼是selenium grid?我們先回顧一下selenium 是如何完成webUI自動化的。如下圖,自動化測試腳本調用selenium API發送命令到webdriver,最終喚起瀏覽器模擬人工執行測試步驟。試想一下,當我們的用例覆蓋範圍越來越廣時,這很完美的替代了人工執行測試用例進行回歸測試的工作,解放了測試人員的生產力。
  • 自動化-Selenium 3-Selenium Grid2(Python版)
    Selenium Grid通過同時在多臺伺服器上運行測試,將Selenium遠程控制提升到另一個級別,從而縮短了測試多個瀏覽器或作業系統所需的時間。官方github 網址:https://github.com/SeleniumHQ/selenium/wiki/Grid2Selenium Grid在Windows或Mac環境下操作基本一致,本章示例為在Windows環境下進行講解。
  • selenium+python 環境搭建
    selenium 介紹selenium 是一個 web 的自動化測試工具,不少學習功能自動化的同學開始首選 selenium
  • Selenium界面自動化測試(12)(Python):Selenium Grid
    在使用Selenium Grid進行分布式測試之前,需要了解Selenium Server,Selenium Server是一個Java編寫的伺服器
  • docker + selenium grid 分布式環境
    獲取鏡像Selenium-Grid 允許你在多臺機器的多個瀏覽器上並行的進行測試,也就是說,你可以同時運行多個測試。
  • Selenium 自動化測試環境搭建
    Selenium測試直接運行在瀏覽器中,就像真正的用戶在操作一樣。支持自動錄製動作和自動生成 .Net、Java、Perl等不同語言的測試腳本。本文詳細介紹了搭建自動化測試環境所需的工具,讓你學習自動化測試不求人!
  • Selenium Grid兼容性測試(Python版)
    當您想要執行以下操作時,您應該使用Selenium Grid:  在不同的瀏覽器、作業系統和機器上運行您的測試。這將確保您測試系統兼容性的環境的完全覆蓋。  在測試套件的執行中節省時間。如果您設置了Selenium Grid,每次運行4個測試,那麼您將能夠以快4倍的速度完成整個套件。有利於更快的發現錯誤。
  • Selenium+Python—實現基本自動化測試
    ,通過一系列命令來模擬用戶操作,可以將這些命令轉化成實際的請求在瀏覽器中運行的命名比較有意思,當時是主流的商業自化工具,是化學元素汞(俗稱水銀),而是開源自動化工具,是化學元素硒,硒可以對抗汞。SeleniumGrid:selenium分布式  SeleniumRC:Selenium1.0的核心,SeleniumRC支持多種不同語言編寫的自動化測試腳本,在瀏覽器中運行JavaScript應用,使用瀏覽器內置的JavaScript翻譯器來翻譯和執行selenese命令(selenese是selenium命令集合)。
  • Python自動化測試(一) -安裝環境
    大家好,今天給大家分享Python自動化測試第一步安裝環境,供大家參考。
  • Selenium3+python自動化50-環境搭建(firefox)
    Unsupported Marionette protocol version 2, required 3環境準備:--python3.6--selenium3.0--firefox50 一、安裝python1.安裝python這個簡單,下載版本後傻瓜式安裝就行了。
  • Python 爬蟲:Selenium 安裝與測試
    在Windows中安裝Selenium模塊可以採用最簡單的pip安裝,執行命令:python -m pip install -U selenium執行結果如圖1所示。執行命令:apt-get install python3-selenium執行結果如圖2所示。
  • 在CentOS7配置Python的selenium環境
    介紹1.1 介紹福哥要做一個自動化測試的腳本來對網站的功能進行了全面的測試,很多人一下會想到通過curl之類的方式去請求伺服器頁面,通過代碼模擬瀏覽器?不就是發送 GET/POST 請求嗎?一開始,福哥也是這樣認為的,直到學習了python的selenium,才體會到「無界面瀏覽器操作模擬」的神奇,今天就跟著福哥學習一下如何使用selenium去模擬用戶操作瀏覽器吧!
  • RobotFrameWork Web自動化測試環境是如何搭建的?
    具備良好的可擴展性,支持關鍵字驅動,可以同時測試多種類型的客戶端或者接口,可以進行分布式測試執行。主要用於輪次很多的驗收測試和驗收測試驅動開發(ATDD),支持python,java等程式語言(百度百科)。
  • python Chrome + selenium自動化測試與python爬蟲獲取網頁數據
    CSDN博客主頁:https://blog.csdn.net/u013541325一、使用
  • Python自動化測試常用庫整理
    今天花了一些時間,過了一下這幾年自己用Python開發的自動化測試框架,然後將其中常用到Python庫抽出來,簡單整理了一下它們的用處。我覺得,只要掌握了這些常用的Python庫,足以應對大多數自動化測試框架和工具的開發工作。
  • Appium+Python做移動端自動化測試
    第一章 導言  1.1 編制目的  該文檔為選用Appium作為行動裝置原生(Native)、混合(Hybrid)、移動Web(Mobile Web)應用UI自動化測試的相關自動化測試人員、開發人員等提供參考。
  • 自動化-Selenium 3-啟動瀏覽器(Python版)
    /usr/bin/env python# -*- coding: utf-8 -*-from selenium import webdriver"""將chromedriver驅動放到Python安裝目錄下(Python已經配置環境變量
  • 運用Python+Selenium+Grid2實現基於瀏覽器的性能測試
    可在後臺回復【1】或戳【免費資源】獲取更新後的下載連結,如下圖所示:項目起源於上級領導要求,希望模擬用戶從頁面上觸發請求到接收到響應的情況,而不單單是只對接口進行性能測試既然要模擬從web頁面上觸發,我首先想到的是Selenium,編寫腳本,實現啟動多個瀏覽器,再結合Selenium Grid2實現分布式多負載機