婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

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

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

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

最近需要測(cè)試zoom視頻會(huì)議,同時(shí)模擬100個(gè)人加入會(huì)議。經(jīng)過(guò)了解,zoom提供了直接通過(guò)url鏈接加入會(huì)議的方式(只能通過(guò)chrome瀏覽器或者FireFox瀏覽器,因?yàn)橛玫膮f(xié)議是webrtc)。

順著這個(gè)思路考慮可以通過(guò)Selenium自動(dòng)化,同時(shí)啟動(dòng)多個(gè)瀏覽器進(jìn)程,每個(gè)進(jìn)程代表一個(gè)視頻會(huì)議用戶,達(dá)到模擬多方會(huì)議的效果。不過(guò)有以下兩個(gè)難點(diǎn):

  • 需要多個(gè)chrome瀏覽器進(jìn)程同時(shí)存活,在電腦上啟動(dòng)一個(gè)chrome瀏覽器進(jìn)程差不多要消耗220M左右。
  • 視頻會(huì)議的音頻和視頻源的問(wèn)題。

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

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

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

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

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

  • 將某臺(tái)服務(wù)器作為Hub,也就是master
  • 將剩下的機(jī)器作為node,注冊(cè)到hub機(jī)器。
  • 本地采用多進(jìn)程執(zhí)行Selenium自動(dòng)化腳本(我使用python語(yǔ)言實(shí)現(xiàn)的)。

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

selenium jar包直接啟動(dòng)節(jié)點(diǎn)

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

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

雖然用腳本也能輕松的執(zhí)行,但還是不方便。首先啟動(dòng)節(jié)點(diǎn)后,會(huì)增加好多java進(jìn)程,并且沒(méi)辦法查看單個(gè)節(jié)點(diǎn)的日志,因?yàn)樗泄?jié)點(diǎn)的日志都同時(shí)在控制臺(tái)打印。于是考慮用docker來(lái)管理Selenium grid節(jié)點(diǎn)。

用docker命令直接啟動(dòng)

在github上有現(xiàn)成的鏡像: https://github.com/SeleniumHQ/docker-selenium 。然后說(shuō)明文檔中也列出了所有可用的鏡像名稱,因?yàn)槲抑饕褂胏hrome瀏覽器,所有安裝了: selenium/hub 、 selenium/node-chrome、 selenium/node-chrome-debug 三個(gè)鏡像,其中selenium/node-chrome-debug鏡像會(huì)啟動(dòng)一個(gè)VNC Server,在腳本執(zhí)行過(guò)程中,本地可以連上VNC Server,通過(guò)界面查看服務(wù)器的腳本執(zhí)行情況。 使用命令:

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

啟動(dòng)hub的命令如下:

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

啟動(dòng)本地節(jié)點(diǎn)(hub和node在一臺(tái)機(jī)器上)的命令如下:

$ 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

啟動(dòng)遠(yuǎn)端節(jié)點(diǎn)(hub和node不在一臺(tái)機(jī)器上)的命令如下:

$ 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)上很多教程提供的啟動(dòng)命令都是hub和node在一臺(tái)機(jī)器上,假如需要hub和node在不同的機(jī)器上,按照網(wǎng)上的教程,雖然啟動(dòng)不會(huì)報(bào)錯(cuò),但是節(jié)點(diǎn)和hub之間的網(wǎng)絡(luò)是不通的。

不過(guò)直接使用docker命令雖然可以單獨(dú)查看單個(gè)節(jié)點(diǎn)的日志,但是卻和使用jar包的方式面對(duì)一樣的問(wèn)題:?jiǎn)?dòng)多個(gè)節(jié)點(diǎn),非常不方便,需要手動(dòng)執(zhí)行多次命令。有沒(méi)有更好的方案呢?當(dāng)然有,可以使用docker-compose對(duì)docker容器進(jìn)行整合。

docker-compose 啟動(dòng)

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

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

Hub和node在一臺(tái)機(jī)器上

可以使用如下的配置文件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

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

$ docker-compose up -d //-d表示在后臺(tái)運(yùn)行

如果想同時(shí)啟動(dòng)多個(gè)節(jié)點(diǎn)該怎么辦呢?非常簡(jiǎn)單:

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

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

$ docker-compose down

Hub和node不在一臺(tái)機(jī)器上

可以使用如下配置文件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é)點(diǎn)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é)點(diǎn)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é)點(diǎn)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é)點(diǎn)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é)點(diǎn)ip:5559
   GRID_TIMEOUT: 60000
  shm_size: "2gb"

啟動(dòng)節(jié)點(diǎn)的命令是(前提是hub需要提前啟動(dòng)):

$ docker-compose up -d

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

$ docker-compose down

遺留問(wèn)題

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

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

總結(jié)

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

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

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

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《用docker搭建selenium grid分布式環(huán)境實(shí)踐之路》,本文關(guān)鍵詞  用,docker,搭建,selenium,grid,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《用docker搭建selenium grid分布式環(huán)境實(shí)踐之路》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于用docker搭建selenium grid分布式環(huán)境實(shí)踐之路的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    精品一区二区在线播放| 色老头久久综合| 中文字幕国产精品一区二区| 中文字幕国产精品一区二区| 亚洲精品视频观看| 精品免费国产二区三区| 91精品国产综合久久婷婷香蕉| 99精品视频在线播放观看| 国产在线一区观看| 欧美刺激午夜性久久久久久久| 久久久国产综合精品女国产盗摄| 岛国精品在线播放| 91精品国产综合久久福利| 中文乱码免费一区二区| 国产偷国产偷亚洲高清人白洁 | 欧美老女人在线| 这里只有精品免费| 蜜臀av性久久久久蜜臀av麻豆| 成人久久视频在线观看| 日韩一区二区三区av| 麻豆91小视频| 欧美人妇做爰xxxⅹ性高电影| 久久久久久久综合| 国产亚洲一二三区| 偷拍日韩校园综合在线| 人人狠狠综合久久亚洲| 91精品欧美久久久久久动漫| 欧美成人a在线| ...xxx性欧美| 色综合天天综合色综合av| 91久久国产最好的精华液| 日韩高清欧美激情| 美女网站在线免费欧美精品| 久久蜜臀中文字幕| 欧美三级视频在线| 福利电影一区二区三区| 亚洲国产一区二区a毛片| 欧美一三区三区四区免费在线看| 91视频免费看| 精品99一区二区三区| 欧美性受极品xxxx喷水| 丁香亚洲综合激情啪啪综合| 亚洲午夜久久久久久久久电影网 | 国产欧美精品一区| 日韩精品免费专区| 亚洲欧美国产高清| 91首页免费视频| 日韩精品一区第一页| 一区二区三区欧美亚洲| 56国语精品自产拍在线观看| 成人国产免费视频| 久久99精品久久只有精品| 一区二区三区精密机械公司| 久久一区二区三区国产精品| 精品在线观看视频| 国产精品传媒入口麻豆| 国产欧美一区二区在线观看| 91福利在线免费观看| 激情深爱一区二区| 丁香桃色午夜亚洲一区二区三区| 狠狠久久亚洲欧美| 午夜日韩在线电影| 日韩精品乱码av一区二区| 麻豆精品视频在线| 欧美一区二区国产| 欧洲生活片亚洲生活在线观看| 亚洲国产精品一区二区久久| 国产精品国产三级国产a | 综合自拍亚洲综合图不卡区| 另类调教123区| 亚洲成人www| 亚洲午夜在线视频| 五月激情综合网| 亚洲日本在线观看| 国产精品不卡视频| 国产精品久久久久精k8 | 色综合久久66| 色噜噜狠狠色综合中国| 秋霞午夜鲁丝一区二区老狼| 亚洲制服丝袜av| 亚洲一区二区三区影院| 亚洲欧美一区二区久久 | 欧美视频一区在线| 精品国产人成亚洲区| 亚洲视频一区二区免费在线观看| 一区二区三区在线看| 日本一不卡视频| 狠狠色狠狠色综合| 奇米精品一区二区三区在线观看一 | 一区二区三区产品免费精品久久75| 夜夜亚洲天天久久| 青青国产91久久久久久| 欧美日韩高清一区二区不卡 | 欧美v日韩v国产v| 亚洲成人av资源| 欧美三级一区二区| 国产精品久久久久久久久搜平片 | 国产suv精品一区二区883| 精品少妇一区二区三区日产乱码 | 亚洲最新在线观看| 亚洲香肠在线观看| 色一情一伦一子一伦一区| 欧美性色黄大片手机版| 亚洲一区二区三区精品在线| 欧美a一区二区| 欧美电影一区二区| 奇米四色…亚洲| 国产麻豆日韩欧美久久| 欧美不卡一区二区三区| 日本一区二区三区在线观看| 国产欧美一区二区精品性| 国产最新精品精品你懂的| 天堂影院一区二区| www国产成人免费观看视频 深夜成人网| 日韩午夜av电影| 国产精品一二三区| 国产日韩精品视频一区| 国产成人aaa| 国产精品狼人久久影院观看方式| 欧美亚洲综合色| 亚洲精品国产成人久久av盗摄| 欧美日韩另类一区| 日韩一区二区三区在线| 国产麻豆一精品一av一免费 | 蜜桃视频在线观看一区| 在线免费观看日韩欧美| 9i在线看片成人免费| 日韩精品一级中文字幕精品视频免费观看| 国产精品天干天干在观线| 99久久夜色精品国产网站| 蜜桃久久av一区| 欧美国产视频在线| 欧美日韩综合一区| 欧美人伦禁忌dvd放荡欲情| 欧美综合久久久| 欧美高清视频不卡网| 久久精品99国产精品| 亚洲麻豆国产自偷在线| 国产视频一区二区在线观看| 国产成人免费视频网站 | 亚洲高清视频中文字幕| 国内精品第一页| 久久99精品久久久久久久久久久久| 国产精品家庭影院| 在线一区二区三区做爰视频网站| 亚洲风情在线资源站| 最新不卡av在线| 亚洲精品国产视频| 亚洲九九爱视频| 免费视频最近日韩| 麻豆精品久久久| 777久久久精品| 26uuu成人网一区二区三区| 欧美色视频在线观看| 欧美日韩亚洲另类| 国产凹凸在线观看一区二区| 99久久久精品免费观看国产蜜| 麻豆精品视频在线观看视频| 日韩欧美成人激情| 欧美一级片在线看| 国产电影一区在线| 久久99国产精品久久| 欧美影院精品一区| 日韩一区二区三区视频在线 | 欧美日韩亚洲丝袜制服| 国产精品自在在线| 欧美人成免费网站| 精品国产乱码久久久久久蜜臀| 亚洲乱码国产乱码精品精的特点| 欧美日韩美女一区二区| 韩国三级中文字幕hd久久精品| 丁香激情综合五月| 2023国产精品自拍| 一区二区在线观看免费| 久久成人免费网站| 欧美视频在线一区| 亚洲午夜日本在线观看| 国产尤物一区二区| wwww国产精品欧美| 美日韩黄色大片| 欧美一级黄色录像| 六月婷婷色综合| 91精品国产aⅴ一区二区| 日韩电影一二三区| 欧美日韩日日夜夜| 日韩精品一级二级| 欧美电影免费提供在线观看| 日韩va亚洲va欧美va久久| 6080yy午夜一二三区久久| 麻豆精品新av中文字幕| 精品福利av导航| 国产精品天美传媒| 91国偷自产一区二区使用方法| 亚洲福利一区二区三区| 免费亚洲电影在线| 欧美一区二区三级| 色偷偷88欧美精品久久久| 欧美哺乳videos| 国产+成+人+亚洲欧洲自线| 中文字幕av一区二区三区免费看|