我正在运行两个 docker 容器,如下所示:
一个用于 selenium/standalone-chrome
$ docker run -d -p 4444:4444 -v /dev/shm:/dev/shm selenium/standalone-chrome
并且主容器使用主机网络连接到在 localhost 上运行的 MySQL
$ docker run --rm --network="host" $(IMAGE_REPO)
但是当我尝试在主容器中启动驱动程序时
from selenium import webdriver
driver = webdriver.Remote(command_executor='http://127.0.0.1:4444/wd/hub',
desired_capabilities=webdriver.DesiredCapabilities.CHROME)
我收到错误消息,要么
urllib3.exceptions.ProtocolError: ('Connection aborted.', BadStatusLine("''",))
或者
urllib3.exceptions.ProtocolError: ('Connection aborted.', error(104, 'Connection reset by peer'))
尝试建立容器时我是否忘记了任何东西/任何参数?或传递给
command_executor
的值不应该是 'http://127.0.0.1:4444/wd/hub'
?我也尝试使用 docker bridge 网络,但是我不知道如何连接到本地主机上的 MySQL 服务器
SQLALCHEMY_URI = '{driver}://{user}:{pwd}@{host}/{db}?charset=utf8' \
.format(
driver='mysql+pymysql',
host='127.0.0.1:3306',
user='root',
pwd='0000',
db='default'
)
最佳答案
更新 Dockerfile 中的以下库:
将 Selenium 库版本设置为 3.3.1 (selenium==3.3.1)。
即:使用 Selenium 图像,其版本为 3.3.1。
使用 Selenium /节点 Chrome :3.3.1 而不是 selenium/node-chrome:3.141.59-gold
关于python - 如何将 selenium 独立 docker 容器与主机网络正确链接?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53026974/