校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃

主頁 > 知識庫 > 用docker搭建selenium grid分布式環(huán)境實踐之路

用docker搭建selenium grid分布式環(huán)境實踐之路

熱門標簽:外呼系統(tǒng)全國 四川保險智能外呼系統(tǒng) 地圖標注員有發(fā)展前景嗎 宜賓銷售外呼系統(tǒng)軟件 廈門防封電銷電話卡 地圖標注能更改嗎 高德地圖標注公司需要錢 云南電商智能外呼系統(tǒng)哪家好 濰坊寒亭400電話辦理多少錢

最近需要測試zoom視頻會議,同時模擬100個人加入會議。經(jīng)過了解,zoom提供了直接通過url鏈接加入會議的方式(只能通過chrome瀏覽器或者FireFox瀏覽器,因為用的協(xié)議是webrtc)。

順著這個思路考慮可以通過Selenium自動化,同時啟動多個瀏覽器進程,每個進程代表一個視頻會議用戶,達到模擬多方會議的效果。不過有以下兩個難點:

  • 需要多個chrome瀏覽器進程同時存活,在電腦上啟動一個chrome瀏覽器進程差不多要消耗220M左右。
  • 視頻會議的音頻和視頻源的問題。

針對視頻會議的音頻和視頻源的問題,chrome瀏覽器有比較好的支持,在Selenium腳本中初始化Chrome瀏覽器的參數(shù)中,只需要加入如下配置:

chrome_options.add_argument("--use-fake-ui-for-media-stream")
chrome_options.add_argument("--use-fake-device-for-media-stream")

就能在加入視頻會議之后,使用虛擬的視頻和音頻。不過有個問題需要考慮,這個虛擬視頻和真實的視頻會議中的視頻質(zhì)量看上去是有差距的,會不會對測試結(jié)果造成影響,我們這里暫時不討論這個話題。

現(xiàn)在唯一比較頭疼的是怎么實現(xiàn)100個chrome瀏覽器進程,可能你會覺得,這不就是資源問題嗎?加服務(wù)器不就搞定了?!但是假如有了服務(wù)器資源之后,怎么做任務(wù)調(diào)度呢?好在有Selenium Grid,它是Selenium的三大組件,專門用來執(zhí)行分布式測試。

于是基于Selenium Grid設(shè)計了個測試方案:

  • 將某臺服務(wù)器作為Hub,也就是master
  • 將剩下的機器作為node,注冊到hub機器。
  • 本地采用多進程執(zhí)行Selenium自動化腳本(我使用python語言實現(xiàn)的)。

按照上面的設(shè)計思路,理論上是能夠模擬出100人同時加入會議的。接下來我們就正式開始用docker搭建Selenium Grid分布式環(huán)境的探索之路。

selenium jar包直接啟動節(jié)點

其實,最開始我是直接使用jar包啟動節(jié)點的,起幾個節(jié)點還能接受,但是節(jié)點多了之后會特別麻煩,比如:想重啟下節(jié)點,則需要手動全部kill掉,然后再一個個啟動。

只要是手動重復(fù)的工作,就能腳本化。于是我寫了兩個shell腳本,一個腳本是根據(jù)傳參啟動對應(yīng)數(shù)量的節(jié)點;另一個腳本是將所有的節(jié)點進程全部kill掉。主要腳本如下圖所示:

雖然用腳本也能輕松的執(zhí)行,但還是不方便。首先啟動節(jié)點后,會增加好多java進程,并且沒辦法查看單個節(jié)點的日志,因為所有節(jié)點的日志都同時在控制臺打印。于是考慮用docker來管理Selenium grid節(jié)點。

用docker命令直接啟動

在github上有現(xiàn)成的鏡像: https://github.com/SeleniumHQ/docker-selenium 。然后說明文檔中也列出了所有可用的鏡像名稱,因為我主要使用chrome瀏覽器,所有安裝了: selenium/hub 、 selenium/node-chrome、 selenium/node-chrome-debug 三個鏡像,其中selenium/node-chrome-debug鏡像會啟動一個VNC Server,在腳本執(zhí)行過程中,本地可以連上VNC Server,通過界面查看服務(wù)器的腳本執(zhí)行情況。 使用命令:

$ docker pull selenium/hub
$ docker pull selenium/node-chrome
$ docker pull selenium/node-chrome-debug

啟動hub的命令如下:

$ docker run -d -p 4444:4444 -e GRID_MAX_SESSION=100 --name hub selenium/hub

啟動本地節(jié)點(hub和node在一臺機器上)的命令如下:

$ docker run -d -p 5555:5555 -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 --shm-size=2g --link hub:hub --name node1 selenium/node-chrome

啟動遠端節(jié)點(hub和node不在一臺機器上)的命令如下:

$ docker run -d -p port:5555 -e HUB_HOST=remote_ip -e HUB_PORT=remote_port -e REMOTE_HOST=http://ip:port -e NODE_MAX_INSTANCES=5 -e NODE_MAX_SESSION=5 --shm-size=2g --name node1 selenium/node-chrome

這里需要注意,網(wǎng)上很多教程提供的啟動命令都是hub和node在一臺機器上,假如需要hub和node在不同的機器上,按照網(wǎng)上的教程,雖然啟動不會報錯,但是節(jié)點和hub之間的網(wǎng)絡(luò)是不通的。

不過直接使用docker命令雖然可以單獨查看單個節(jié)點的日志,但是卻和使用jar包的方式面對一樣的問題:啟動多個節(jié)點,非常不方便,需要手動執(zhí)行多次命令。有沒有更好的方案呢?當然有,可以使用docker-compose對docker容器進行整合。

docker-compose 啟動

docker compose是docker的一個命令行工具,用來定義和運行多個容器組成的應(yīng)用。相當于我們可以將多個docker命令放到一個文件里,然后由docker-compose一鍵執(zhí)行。

同樣的,也需要分兩種情況:

Hub和node在一臺機器上

可以使用如下的配置文件docker-compose.yml

version: "3"
services:
 selenium-hub:
  image: selenium/hub
  container_name: selenium-hub
  ports:
   - "4444:4444"
  environment:
   - GRID_MAX_SESSION=50
   - GRID_TIMEOUT=900
   - START_XVFB=false
 chrome:
  image: selenium/node-chrome
  volumes:
   - /dev/shm:/dev/shm
  depends_on:
   - selenium-hub
  environment:
   - HUB_HOST=selenium-hub
   - HUB_PORT=4444
   - NODE_MAX_INSTANCES=5
   - NODE_MAX_SESSION=5

然后在控制臺執(zhí)行命令:

$ docker-compose up -d //-d表示在后臺運行

如果想同時啟動多個節(jié)點該怎么辦呢?非常簡單:

$ docker-compose up -d --scale chrome=num  //num是要啟動節(jié)點的數(shù)量

如果想關(guān)閉節(jié)點,可以執(zhí)行如下命令:

$ docker-compose down

Hub和node不在一臺機器上

可以使用如下配置文件docker-compose.yml

version: "3"
services:
 # selenium-chrome-1
 selenium-chrome-node-1:
  image: selenium/node-chrome
  volumes:
   - /dev/shm:/dev/shm
  ports:
   - "5556:5555"
  restart: always
  stdin_open: true
  environment:
   HUB_HOST: hub_ip
   HUB_PORT: 4444
   NODE_MAX_INSTANCES: 5
   NODE_MAX_SESSION: 5
   REMOTE_HOST: http://節(jié)點ip:5556
   GRID_TIMEOUT: 60000
  shm_size: "2gb"
 # selenium-chrome-2
 selenium-chrome-node-2:
  image: selenium/node-chrome
  volumes:
   - /dev/shm:/dev/shm
  ports:
   - "5555:5555"
  restart: always
  stdin_open: true
  container_name: node1
  environment:
   HUB_HOST: hub_ip
   HUB_PORT: 4444
   NODE_MAX_INSTANCES: 5
   NODE_MAX_SESSION: 5
   REMOTE_HOST: http://節(jié)點ip:5555
   GRID_TIMEOUT: 60000
  shm_size: "2gb"
 # selenium-chrome-3
 selenium-chrome-node-3:
  image: selenium/node-chrome
  volumes:
   - /dev/shm:/dev/shm
  ports:
   - "5557:5555"
  restart: always
  stdin_open: true
  environment:
   HUB_HOST: hub_ip
   HUB_PORT: 4444
   NODE_MAX_INSTANCES: 5
   NODE_MAX_SESSION: 5
   REMOTE_HOST: http://節(jié)點ip:5557
   GRID_TIMEOUT: 60000
  shm_size: "2gb"
 # selenium-chrome-4
 selenium-chrome-node-4:
  image: selenium/node-chrome
  volumes:
   - /dev/shm:/dev/shm
  ports:
   - "5558:5555"
  restart: always
  stdin_open: true
  environment:
   HUB_HOST: hub_ip
   HUB_PORT: 4444
   NODE_MAX_INSTANCES: 5
   NODE_MAX_SESSION: 5
   REMOTE_HOST: http://節(jié)點ip:5558
   GRID_TIMEOUT: 60000
  shm_size: "2gb"

 # selenium-chrome-5
 selenium-chrome-node-5:
  image: selenium/node-chrome
  volumes:
   - /dev/shm:/dev/shm
  ports:
   - "5559:5555"
  restart: always
  stdin_open: true
  environment:
   HUB_HOST: hub_ip
   HUB_PORT: 4444
   NODE_MAX_INSTANCES: 5
   NODE_MAX_SESSION: 5
   REMOTE_HOST: http://節(jié)點ip:5559
   GRID_TIMEOUT: 60000
  shm_size: "2gb"

啟動節(jié)點的命令是(前提是hub需要提前啟動):

$ docker-compose up -d

關(guān)閉節(jié)點的命令是:

$ docker-compose down

遺留問題

按照我上面這種方式搭建Selenium Grid環(huán)境,本地節(jié)點可以正常執(zhí)行,但是遠端的節(jié)點卻經(jīng)常超時,不過從http://hub_ip:4444/grid/console界面上看到的節(jié)點網(wǎng)絡(luò)全部都是通的。

之前查過一些資料,貌似需要使用Docker Swarm,它是一個docker集群管理工具, 將若干臺 Docker 主機抽象為一個整體,并且通過一個入口統(tǒng)一管理這些 Docker 主機上的各種 Docker 資源 。不過目前還沒研究它,后面如果用Docker Swarm有結(jié)論之后,我再寫文章同步給大家。

總結(jié)

用docker搭建selenium grid分布式環(huán)境,非常方便,基本是一行命令就能啟動或者關(guān)閉節(jié)點。希望我這篇文章能給大家提供一些思路,幫助大家在平時的工作中解決一些問題。

到此這篇關(guān)于用docker搭建selenium grid分布式環(huán)境實踐之路的文章就介紹到這了,更多相關(guān)docker搭建selenium grid分布式內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標簽:德州 廊坊 紅河 滁州 廣安 回訪 巴彥淖爾 湛江

巨人網(wǎng)絡(luò)通訊聲明:本文標題《用docker搭建selenium grid分布式環(huán)境實踐之路》,本文關(guān)鍵詞  用,docker,搭建,selenium,grid,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用docker搭建selenium grid分布式環(huán)境實踐之路》相關(guān)的同類信息!
  • 本頁收集關(guān)于用docker搭建selenium grid分布式環(huán)境實踐之路的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    校园春色亚洲色图_亚洲视频分类_中文字幕精品一区二区精品_麻豆一区区三区四区产品精品蜜桃
    国产在线精品一区在线观看麻豆| 亚洲欧美区自拍先锋| 久久99精品久久久久久动态图| 日韩一区二区三区电影| 久久国产三级精品| 国产欧美日韩激情| 91在线小视频| 亚洲成人在线观看视频| 欧美成人高清电影在线| 国产精品一区二区免费不卡| 中文字幕免费在线观看视频一区| 99久久久久久99| 天堂久久一区二区三区| www日韩大片| 91视视频在线观看入口直接观看www | 国产成人免费视频网站| 日本一区二区不卡视频| 欧美亚洲国产一区二区三区| 蜜臀99久久精品久久久久久软件| 久久九九影视网| 欧美在线一二三| 激情五月激情综合网| 成人欧美一区二区三区小说| 91麻豆精品久久久久蜜臀| 国产精品一区二区黑丝| 亚洲在线中文字幕| 精品国产伦一区二区三区观看方式 | 亚洲444eee在线观看| 久久天天做天天爱综合色| 日本高清免费不卡视频| 国产在线一区观看| 亚洲成人免费看| 日本一区二区综合亚洲| 欧美高清dvd| av一区二区三区在线| 乱一区二区av| 午夜精品视频一区| 亚洲丝袜精品丝袜在线| 欧美xxxxxxxxx| 欧美唯美清纯偷拍| 91视频国产观看| 国产成人综合自拍| 三级在线观看一区二区 | 亚洲激情图片一区| 国产精品私人影院| 精品区一区二区| 欧美日韩中文字幕一区二区| 成人av在线资源| 韩国精品主播一区二区在线观看| 亚洲成人动漫在线免费观看| 国产精品视频你懂的| 精品少妇一区二区三区在线播放| 欧美日韩一区三区| 色婷婷国产精品综合在线观看| 国产精品88888| 久久国内精品自在自线400部| 亚洲成人自拍网| 亚洲一二三区视频在线观看| 中文字幕亚洲视频| 国产精品女同互慰在线看| 久久综合久色欧美综合狠狠| 91麻豆精品国产自产在线| 欧美在线free| 色综合咪咪久久| 99久久精品99国产精品| 成人性生交大片免费| 国产精品18久久久久久vr| 精品在线免费观看| 久久aⅴ国产欧美74aaa| 蜜臀久久久久久久| 日韩精品一级中文字幕精品视频免费观看| 亚洲免费大片在线观看| 一区在线播放视频| 亚洲私人影院在线观看| 亚洲欧美自拍偷拍| 亚洲欧美偷拍另类a∨色屁股| 国产精品区一区二区三区| 国产精品二区一区二区aⅴ污介绍| 久久精品免费在线观看| 国产精品乱码人人做人人爱| 国产精品久久久99| 亚洲人妖av一区二区| 国产精品国产三级国产三级人妇| 国产精品免费看片| 国产精品成人一区二区艾草| 成人欧美一区二区三区黑人麻豆| 中文字幕一区日韩精品欧美| 亚洲色图自拍偷拍美腿丝袜制服诱惑麻豆| 国产精品丝袜黑色高跟| 亚洲图片另类小说| 亚洲国产日韩a在线播放性色| 亚洲国产精品欧美一二99| 手机精品视频在线观看| 免费在线观看日韩欧美| 国内欧美视频一区二区| 成人黄色软件下载| 日本高清不卡视频| 在线成人免费视频| 欧美精品一区二区三区蜜桃| 国产亚洲精品7777| 一区二区三区中文字幕电影| 亚洲高清视频的网址| 韩日欧美一区二区三区| 成人激情午夜影院| 欧美性猛交xxxx黑人交 | 2023国产一二三区日本精品2022| 国产区在线观看成人精品| 亚洲欧美激情在线| 理论片日本一区| 成人av午夜影院| 欧洲精品在线观看| 国产日韩影视精品| 亚洲国产一区视频| 国产成人福利片| 欧美日韩国产一区二区三区地区| 精品国产乱码91久久久久久网站| 国产精品剧情在线亚洲| 日韩不卡一区二区三区| 99久久精品免费精品国产| 欧美电视剧免费全集观看| 亚洲天堂av老司机| 黄网站免费久久| 欧美综合亚洲图片综合区| 久久久精品国产免大香伊| 亚洲va在线va天堂| 不卡一区二区三区四区| 精品少妇一区二区三区在线视频 | 亚洲综合一区在线| 国产在线一区二区| 欧美区在线观看| 国产精品青草久久| 极品少妇xxxx偷拍精品少妇| 欧美主播一区二区三区| 欧美国产成人在线| 精品一区二区三区不卡| 欧美人牲a欧美精品| √…a在线天堂一区| 国产露脸91国语对白| 欧美一区二区在线免费播放| 专区另类欧美日韩| 国产精华液一区二区三区| 91麻豆精品国产91| 伊人一区二区三区| 成人黄色免费短视频| 久久综合九色综合欧美98| 午夜在线成人av| 91久久精品一区二区三| 国产精品丝袜一区| 国产成人亚洲精品青草天美 | 老鸭窝一区二区久久精品| 在线观看日韩国产| 亚洲乱码国产乱码精品精可以看| 成人av网址在线| 久久精品人人做人人综合| 精品一区二区久久| 日韩手机在线导航| 日本一道高清亚洲日美韩| 欧美日本在线播放| 亚洲福利电影网| 在线观看91视频| 亚洲高清在线精品| 欧美日韩国产影片| 爽爽淫人综合网网站 | 欧美久久久久久久久久| 亚洲一区电影777| 欧美日本国产一区| 日韩av一区二区三区四区| 欧美一卡二卡三卡| 日本成人在线电影网| 91精品国产综合久久精品图片| 天天综合天天做天天综合| 欧美精品乱人伦久久久久久| 日韩精品一级二级 | 亚洲一区中文在线| 欧美日韩国产影片| 乱一区二区av| 国产日韩成人精品| 99re6这里只有精品视频在线观看 99re8在线精品视频免费播放 | 亚洲欧洲精品天堂一级| 97国产一区二区| 亚洲国产综合在线| 日韩欧美三级在线| 国产精品影视在线| 中文字幕五月欧美| 欧美无乱码久久久免费午夜一区 | 亚洲激情图片小说视频| 欧美老人xxxx18| 久久99国产精品尤物| 国产精品久久久久久久久免费相片 | 久久亚洲精品小早川怜子| 国产不卡在线视频| 亚洲综合免费观看高清在线观看| 69堂成人精品免费视频| 国产一区二区三区观看| 中文字幕在线观看不卡| 欧美日韩精品福利| 国产成人在线网站| 亚洲一区在线观看网站| 亚洲精品一区二区三区蜜桃下载 | 91精品1区2区|