我使用以下docker-compose.yml命令运行基于jupyter/datascience-notebook:87210526f381和 的jupyter notebook selenium/node-chrome:
version: '3'
services:
selenium-hub:
image: selenium/hub:3.141.59-dubnium
container_name: selenium-hub
ports:
- "4444:4444"
chrome:
image: selenium/node-chrome:3.141.59-dubnium
volumes:
- /dev/shm:/dev/shm
depends_on:
- selenium-hub
environment:
- HUB_HOST=selenium-hub
- HUB_PORT=4444
networks:
- backend
nbdatascience:
container_name: nbdatascience
image: aabor/nbdatascience
build: nbdatascience/.
volumes:
- /home/$USER/py:/home/jovyan/work/py
- /home/$USER/.jupyter:/home/jovyan/.jupyter
ports:
- "10000:8888"
environment:
- TZ="Europe/Kiev"
restart: always
networks:
- backend
depends_on:
- chrome
networks:
backend:
driver: bridge
当 selenium hub 上的所有这些容器都可以访问时http://localhost:4444/,jupyter 实验室在http://localhost:10000/lab.
我正在尝试从执行以下 python 脚本的笔记本打开 Web 浏览器会话:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
cap = DesiredCapabilities.CHROME
driver = webdriver.Remote(command_executor='localhost:4444', desired_capabilities=cap)
更正:运行此 python 脚本可解决问题,已创建驱动程序并且可以在无头模式下浏览 Internet:
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities
cap = DesiredCapabilities.CHROME
driver = webdriver.Remote(command_executor='http://selenium-hub:4444/wd/hub',desired_capabilities=cap)
如何打开与在另一个 docker 容器中运行的 selenium chrome 的连接?SeleniumHQ/docker-selenium 中 的文档缺少这些细节。
docker network 上的文档说“一旦连接,容器只能使用另一个容器的 IP 地址或名称进行通信”,因此是否可以在 python 脚本中按名称调用另一个容器,例如:driver = webdriver.Remote(command_executor='chrome', desired_capabilities=cap). 我试过这个命令,但它给了我同样的错误:“连接被拒绝”。
不负相思意
相关分类