selenium 實現多機器部署分布式執行


1selenium-grid

selenium實現多機器分布式執行,依靠的是:selenium-grid(selenium的三大組件之一)。selenium-grid允許用戶在不同的機器上並行地針對不同的瀏覽器運行測試。selenium-grid采用的是Hub和Node模式,允許在分布式測試執行環境中運行測試。

selenium Hub用來管理各個selenium Node的注冊信息和狀態信息,並且接收遠程客戶端代碼的測試調用請求,並把請求命令發送給符合要求的selenium Node執行。

優點:

  1. 可以減少測試的執行時間;
  2. 支持針對多個運行環境的運行—不同系統的兼容性;
  3. 支持所有場景擁有相同瀏覽器、類型、版本的測試—不同瀏覽器的兼容性。

 

2、環境搭建

2.1 運行環境的准備

***所有的Hub和Node的環境均按⤵️要求配置

  1. 下載selenium-serverhttps://www.selenium.dev/downloads/。我下載的是:selenium-server-standalone-3.141.59.jar
  2. 下載java環境,並配置java環境。Java環境分為JDK和JRE兩種,JDK是面向開發者使用的SDK,它提供了java的開發環境和運行環境,JRE是java的運行環境,它面向的是java程序的使用者,而不是開發者。這里我們直接下載JDK,下載地址如下:https://www.oracle.com/technetwork/java/javase/downloads/index.html  (驗證:java --version
  3. 下載瀏覽器驅動,chromedriverhttp://chromedriver.storage.googleapis.com/index.html。(注意與chrome瀏覽器的版本相匹配)

2.2 selenium-grid搭建

  • 准備2+台機器
  • 選擇其中一台機器作為Hub。在該機器上啟動一個Hub和一個Node,打開兩個終端分別輸入:
java -jar selenium-server-standalone-3.141.59.jar -role hub   #端口默認4444

 

java -jar selenium-server-standalone-3.141.59.jar -role node -port 5555

 

# 擴展

 如果需要多個節點,改變端口增加即可。

 

觀察node節點的信息

可以在這台計算機上訪問 http://localhost:4444/grid/console

 

  • 在所有的node節點的機器的終端執行如下命令:
java -jar selenium-server-standalone-3.141.59.jar -role node -port 8888 -hub http://hub機器的ip:4444/grid/register

 

  • 回到hub機器上運行自動化腳本即可,Demo代碼如下:
 1 # coding = utf-8
 2 
 3 from threading import Thread
 4 from time import sleep, ctime
 5 from selenium import webdriver
 6 
 7 
 8 def test_sample(host, browser):
 9     """測試用例"""
10     print('start:%s' % ctime())
11     print(host, browser)
12     dc = {'browserName': browser}
13     driver = webdriver.Remote(command_executor=host, desired_capabilities=dc)
14     driver.get('http://www.baidu.com')
15     driver.find_element_by_id('kw').send_keys(browser)
16     driver.find_element_by_id('su').click()
17     sleep(5)
18     driver.close()
19 
20 
21 if __name__ == '__main__':
22     lists = {'http://10.9.xxx.xx:7777/wd/hub': 'chrome1',
23              'http://10.9.xxx.xx:5555/wd/hub': 'chrome2',
24              'http://10.9.xxx.xx:8888/wd/hub': 'chrome',
25              'http://10.9.xxx.xx:9999/wd/hub': 'chrome'
26              }
27     threads = []
28     files = range(len(lists))
29 
30     # 創建線程
31     for host, browser in lists.items():
32         t = Thread(target=test_sample, args=(host, browser))
33         threads.append(t)
34 
35     # 啟動線程
36     for i in files:
37         threads[i].start()
38     for i in files:
39         threads[i].join()
40     print('end:%s' % ctime())

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM