基于Docker Selenium Grid 搭建分布式測試環(huán)境

分布式selenium grid 搭建方法:
https://testdriven.io/blog/distributed-testing-with-selenium-grid/

https://blog.csdn.net/ldq_sd/article/details/109893462?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7Edefault-1.no_search_link

https://blog.csdn.net/liwei_721/article/details/105109798

SeleniumHQ/docker-selenium github code:
https://github.com/SeleniumHQ/docker-selenium

基于Docker compose Selenium Grid 搭建分布式測試環(huán)境
https://techblog.dotdash.com/setting-up-a-selenium-grid-with-docker-containers-for-running-automation-tests-c43aceccd5d9
https://nitinbhardwaj6.medium.com/selenium-grid-with-debug-docker-containers-23eceb6ab17f

version: "3"
services:
  hub:
    image: selenium/hub:3.141.59
    ports:
      - "4444:4444"
    environment:
      GRID_MAX_SESSION: 16
      GRID_BROWSER_TIMEOUT: 3000
      GRID_TIMEOUT: 3000
  chrome:
    image: selenium/node-chrome-debug
    container_name: web-automation_chrome
    depends_on:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_SESSION: 4
      NODE_MAX_INSTANCES: 4
    volumes:
      - /dev/shm:/dev/shm
    ports:
      - "9001:5900"
    links:
      - hub
  firefox:
    image: selenium/node-firefox-debug
    container_name: web-automation_firefox
    depends_on:
      - hub
    environment:
      HUB_PORT_4444_TCP_ADDR: hub
      HUB_PORT_4444_TCP_PORT: 4444
      NODE_MAX_SESSION: 2
      NODE_MAX_INSTANCES: 2
    volumes:
      - /dev/shm:/dev/shm
    ports:
      - "9002:5900"
    links:
      - hub

Docker Selenium Grid Setup:增加 node number and session number
https://dev.to/automationbro/docker-selenium-grid-setup-1lg4

Increasing the MAX_INSTANCES & MAX_SESSIONS for the Grid

So far we just have 1 instance of Chrome & Firefox, however, if you need to run multiple tests together, you'll need more instances spun up. You can do that quite easily by adding the parameters when running the docker container for Chrome and Firefox.

docker run -d --net grid -e HUB_HOST=selenium-hub -e NODE_MAX_INSTANCES=3 -e NODE_MAX_SESSION=3 -v /dev/shm:/dev/shm selenium/node-chrome-debug:3.141.59–20210422

You can pass NODE_MAX_INSTANCES and NODE_MAX_SESSION environment variables to add multiple instances of the browsers.

  • NODE_MAX_INSTANCES: number of instances of the same version of the browser
  • NODE_MAX_SESSION: number of browsers (any versions) that can run in parallel

Once you do that, you will see something like this below?:


image.png

https://testdriven.io/blog/distributed-testing-with-selenium-grid/

騰訊官網(wǎng)的doc:
https://cloud.tencent.com/developer/article/1634286

如何安裝制定版本額docker-compose
1.查找到響應(yīng)版本
https://github.com/docker/compose/releases
2.安裝的cmd
https://docs.docker.com/compose/install/

清除(關(guān)閉全部容器) :docker kill (docker ps -a -q) 刪除全部容器:docker rm(docker ps -a -q)
再次查看容器情況狠轻,運(yùn)行:docker ps –a 發(fā)現(xiàn)整個世界都清凈了礁蔗。

清除(關(guān)閉全部容器) :docker kill (docker ps -a | grep selenium) 刪除全部容器:docker rm(docker ps -a | grep selenium)
再次查看容器情況,運(yùn)行:docker ps –a 發(fā)現(xiàn)整個世界都清凈了蚤霞。

Selenium Grid and Docker:
https://nazarkhimin.medium.com/selenium-grid-and-docker-25a79f0b9007

# To execute this docker-compose yml file
# use `docker-compose -f docker-compose.yml up --build --abort-on-container-exit --scale chrome=2 --scale firefox=2`
version: "3"
services:
  firefox:
    image: selenium/node-firefox-debug
    volumes:
      - /dev/shm:/dev/shm
      - /home/admin/selenium/files/Certificate:/home/admin/selenium/files/Certificate
    ports:
      - "5556:5900"
    depends_on:
      - hub
    environment:
      - TZ="UT"
      - http_proxy=http://web-proxy.us.softwaregrp.net:8080
      - https_proxy=http://web-proxy.us.softwaregrp.net:8080
      - HUB_HOST=hub
    networks: ['selenium-grid']
  chrome:
    image: selenium/node-chrome-debug
    volumes:
      - /dev/shm:/dev/shm
      - /home/admin/selenium/files/Certificate:/home/admin/selenium/files/Certificate
    ports:
      - "5557:5900"
    depends_on:
      - hub
    environment:
      - TZ="UT"
      - http_proxy=http://web-proxy.us.softwaregrp.net:8080
      - https_proxy=http://web-proxy.us.softwaregrp.net:8080
      - HUB_HOST=hub
    networks: ['selenium-grid']
  hub:
    image: selenium/hub:3.141.59
    ports:
      - "4444:4444"
    networks: ['selenium-grid']
networks: {selenium-grid: {}}

如何使用docker-compose mount:
https://code.visualstudio.com/remote/advancedcontainers/add-local-file-mount

  • Docker Compose: Update (or extend) your docker-compose.yml with the following for the appropriate service:

    version: '3'
    services:
      your-service-name-here:
        volumes:
          - /local/source/path/goes/here:/target/path/in/container/goes/here:cached
          - ~:/host-home-folder:cached
          - ./data-subfolder:/data:cached
         # ...
    

If you've already built the container and connected to it, run Remote-Containers: Rebuild Container from the Command Palette (F1) to pick up the change. Otherwise run Remote-Containers: Open Folder in Container... to connect to the container.

設(shè)置proxy in the container:
https://stackoverflow.com/questions/50149133/how-can-i-setup-a-proxy-in-a-selenium-chrome-container

如何使用K8S 搭建分布式 selenium:
https://github.com/alcounit/selenosis/issues/47
https://github.com/alcounit/selenosis#run-yout-tests

如何使用工具portainer監(jiān)控host主機(jī)的container 狀態(tài):
https://levelup.gitconnected.com/portainer-the-easy-way-to-manage-docker-a982a17146c1

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末饭入,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌五芝,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件辕万,死亡現(xiàn)場離奇詭異枢步,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)渐尿,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評論 2 382
  • 文/潘曉璐 我一進(jìn)店門醉途,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人砖茸,你說我怎么就攤上這事隘擎。” “怎么了凉夯?”我有些...
    開封第一講書人閱讀 152,671評論 0 342
  • 文/不壞的土叔 我叫張陵货葬,是天一觀的道長。 經(jīng)常有香客問我劲够,道長震桶,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 55,252評論 1 279
  • 正文 為了忘掉前任征绎,我火速辦了婚禮蹲姐,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘。我一直安慰自己柴墩,他們只是感情好忙厌,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評論 5 371
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著江咳,像睡著了一般逢净。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上扎阶,一...
    開封第一講書人閱讀 49,031評論 1 285
  • 那天汹胃,我揣著相機(jī)與錄音,去河邊找鬼东臀。 笑死着饥,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的惰赋。 我是一名探鬼主播宰掉,決...
    沈念sama閱讀 38,340評論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼赁濒!你這毒婦竟也來了轨奄?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 36,973評論 0 259
  • 序言:老撾萬榮一對情侶失蹤拒炎,失蹤者是張志新(化名)和其女友劉穎挪拟,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體击你,經(jīng)...
    沈念sama閱讀 43,466評論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡玉组,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評論 2 323
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了丁侄。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片惯雳。...
    茶點(diǎn)故事閱讀 38,039評論 1 333
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖鸿摇,靈堂內(nèi)的尸體忽然破棺而出石景,到底是詐尸還是另有隱情,我是刑警寧澤拙吉,帶...
    沈念sama閱讀 33,701評論 4 323
  • 正文 年R本政府宣布潮孽,位于F島的核電站,受9級特大地震影響庐镐,放射性物質(zhì)發(fā)生泄漏恩商。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評論 3 307
  • 文/蒙蒙 一必逆、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧,春花似錦名眉、人聲如沸粟矿。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽陌粹。三九已至,卻和暖如春福压,著一層夾襖步出監(jiān)牢的瞬間掏秩,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評論 1 262
  • 我被黑心中介騙來泰國打工荆姆, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留蒙幻,地道東北人。 一個月前我還...
    沈念sama閱讀 45,497評論 2 354
  • 正文 我出身青樓胆筒,卻偏偏與公主長得像邮破,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子仆救,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評論 2 345

推薦閱讀更多精彩內(nèi)容