Я строю сетку селена, которая может содержать несколько браузеров для запуска сценария автоматизации, через некоторое время я нашел способ развернуть его в режиме роя.
version: '3'
networks:
private:
driver: overlay
services:
selenium_hub:
image: selenium/hub
ports:
- 4444:4444
deploy:
mode: global
placement:
constraints:
- node.role == manager
networks:
- private
firefox:
image: selenium/node-firefox
volumes:
- /dev/urandom:/dev/random
depends_on:
- selenium_hub
environment:
- HUB_PORT_4444_TCP_ADDR=selenium_hub
- HUB_PORT_4444_TCP_PORT=4444
- NODE_MAX_SESSION=1
entrypoint: bash -c 'SE_OPTS="-host $$HOSTNAME -port 5555" /opt/bin/entry_point.sh'
ports:
- "5555:5555"
deploy:
replicas: 1
networks:
- private
chrome:
image: selenium/node-chrome
volumes:
- /dev/urandom:/dev/random
depends_on:
- selenium_hub
environment:
- HUB_PORT_4444_TCP_ADDR=selenium_hub
- HUB_PORT_4444_TCP_PORT=4444
- NODE_MAX_SESSION=1
entrypoint: bash -c 'SE_OPTS="-host $$HOSTNAME -port 5556" /opt/bin/entry_point.sh'
ports:
- 5556:5556
deploy:
replicas: 1
networks:
- private
Мой рой теперь может запускать веб-автоматизациюСкрипты с масштабом, но моя проблема заключается в том, чтобы улучшить сетку для эмуляторов Android и реальных устройств.Для того, чтобы реализовать мои требования, я нашел хороший пример, который позволяет мне развертывать сетку селена с эмуляторами Android, но я не могу преобразовать свой файл YAML в режим роя.
Я хочу знать, что я сделал неправильно, икакая разница между клавишами команды docker-compose и развертыванием стека докеров.
Данные, которые я хочу добавить:
real_device:
image: appium/appium
depends_on:
- selenium_hub
network_mode: "service:selenium_hub"
privileged: true
volumes:
- /dev/bus/usb:/dev/bus/usb
- ~/.android:/root/.android
- $PWD/example/sample_apk:/root/tmp
environment:
- CONNECT_TO_GRID=true
- SELENIUM_HOST=selenium_hub
# Enable it for msite testing
#- BROWSER_NAME=chrome
# Docker-Android for Android application testing
nexus_7.1.1:
image: budtmo/docker-android-x86-7.1.1
privileged: true
# Increase scale number if needed
scale: 1
depends_on:
- selenium_hub
- real_device
ports:
- 6080
# Change path of apk that you want to test. I use sample_apk that I provide in folder "example"
volumes:
- $PWD/example/sample_apk:/root/tmp/sample_apk
- ./video-nexus_7.1.1:/tmp/video
environment:
- DEVICE=Nexus 5
- CONNECT_TO_GRID=true
- APPIUM=true
- SELENIUM_HOST=selenium_hub
- AUTO_RECORD=true
# Docker-Android for mobile website testing with chrome browser
# Chrome browser exists only for version 7.0 and 7.1.1
samsung_galaxy_web_7.1.1:
image: budtmo/docker-android-x86-8.1
privileged: true
# Increase scale number if needed
scale: 1
depends_on:
- selenium_hub
- real_device
ports:
- 6080
volumes:
- ./video-samsung_7.1.1:/tmp/video
environment:
- DEVICE=Samsung Galaxy S6
- CONNECT_TO_GRID=true
- APPIUM=true
- SELENIUM_HOST=selenium_hub
- MOBILE_WEB_TEST=true
- AUTO_RECORD=true
# Docker-Android for mobile website testing with default browser
# Default browser exists only for version 5.0.1, 5.1.1 and 6.0
samsung_galaxy_web_5.1.1:
image: budtmo/docker-android-x86-5.1.1
privileged: true
# Increase scale number if needed
scale: 1
depends_on:
- selenium_hub
- real_device
ports:
- 6080
volumes:
- ./video-samsung_5.1.1:/tmp/video
environment:
- DEVICE=Samsung Galaxy S6
- CONNECT_TO_GRID=true
- APPIUM=true
- SELENIUM_HOST=selenium_hub
- MOBILE_WEB_TEST=true
- AUTO_RECORD=true