python - 如何将 selenium 独立 docker 容器与主机网络正确链接?

标签 python selenium docker docker-networking

我正在运行两个 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/

相关文章:

python - 在 Pandas Dataframe 上执行 SQL 并将结果存储在同一 Dataframe 中

python - 将整数列表拆分为数字列表

python - 在本地计算机上运行的 django 无法连接到运行 MYSQL 的 docker 容器

docker - 如何在 minikube 注册表中创建 docker 镜像

python - 为什么 int 在 Python 中需要三倍的内存?

python - Django:如何根据表单的非持久字段自定义保存模型/表单?

python - 用 Python 编写的 Selenium RC 测试可以集成到 PHPUnit 中吗?

selenium - 如何在 Robot Framework 和 Selenium 中检查文本是否在网页中

java - 用 selenium 删除 IE 中的地址栏

docker - 如何在 cassandra 的 docker 实例中启用用户定义的函数?