当前位置: 首页 > 知识库问答 >
问题:

如何连接到同一docker compose中的远程Selenium驱动程序?

屈翰飞
2023-03-14

我遇到了一个

urllib3.exceptions。MaxRetryError:HTTPConnectionPool(host='chromedriver',port=4444):url:/wd/hub/session超过了最大重试次数(由NewConnectionError('

通过Python和Docker运行Selenium时。

我的连接如下所示:

self.driver = webdriver.Remote(
           command_executor='http://chromedriver:4444/wd/hub',
           options=options
       )

docker组成如下:

...
  chromedriver:
    image: selenium/standalone-chrome
    ports:
      - "4444:4444"
    hostname: chromedriver
    shm_size: 2g
  runner:
    image: "kevoooo/twitchfarm-runner:latest"
    entrypoint: "python3 /py-scripts/main.py"
    healthcheck:
        test: python3 /py-scripts/main.py
        interval: 30s
        timeout: 10s
        retries: 5
    environment:
      - DISPLAY=127.0.0.1
      - USER=uname
      - PASS=pass
      - 2FA_KEY=key
    volumes:
      - "chrome-data:/saves/google-chrome"
    depends_on:
      - chromedriver
...

提前感谢!

共有2个答案

越涛
2023-03-14

我将“runner”的入口点改为:

    entrypoint: bash -c "sleep 10 && python3 /py-scripts/main.py"

我想,那是由“依赖”条款处理的

漆雕誉
2023-03-14

根据https://docs.docker.com/compose/startup-order/-依赖于仅控制服务启动的顺序。它不知道容器何时准备好。

基本上,容器就绪状态是客户端如何处理它,因此使用容器化服务的应用程序如何处理服务中断(服务尚未完全启动的原因或服务启动后的任何故障造成的)

所以你的解决方案是有意义的。尽管它够粗糙。更好的选择是使用一个脚本轮询endpoint,直到返回成功,然后继续测试代码。

 类似资料:
  • 我试图在远程节点上运行selenium网格代码,但它总是引发异常。 集线器: 它会听192.168.1.106:4444 节点: 它将在192.168.1.132:5566收听 Java代码: 节点日志: 操作系统:Fedora 23,Firefox版本50.1.0,selenium独立服务器3.0.1

  • 我需要高级步骤来连接到远程JMS提供程序。 我有一些客户端应用程序希望在JNDI中基于文件系统进行查找,以获得JMS提供程序的连接工厂。 我知道在JMS管理(MQ Explorer)中,我们可以创建连接工厂。这就是创造。绑定文件。我如何使用这个。将文件绑定到我的客户端应用程序系统? 客户端应用程序系统是否应该包含JMS管理员来创建。同一系统或中的绑定。是否应将绑定单独导入到客户端系统? 如果使用文

  • 问题内容: 是否可以从本地Mac在托管在云中的Docker集群上执行命令?如果是,怎么办? 我想在本地从docker swarm上执行以下命令: 问题答案: 问题的答案可以在这里找到。 对于ubuntu机器需要做的是在路径中定义daemon.json文件,其内容如下: 上面的配置不安全,如果服务器是公共托管的,则不应使用。 对于安全连接,请使用以下配置: 如@BMitch所述,可以在此处找到生成证

  • 这是我在运行上述程序时遇到的错误。有人解决了这个问题吗? 我尝试过改变Selenium和ChromeDriver的版本,但没有任何效果。

  • 我目前正在创建一个API,它使用具有3个节点的Cassandra集群来存储数据。我使用PHP 5.6.17、Cassandra 2.2.3和Datastax PHP Driver 1.1.0在本地机器上开发它,一切都很顺利。 但是,我们决定迁移到远程 Cassandra 集群(带有本机协议 4 的 3.4),我无法通过 PHP 访问它,因为我收到以下错误:发生错误:16777226 - 没有可用于

  • 我在express中使用mongodb本机驱动程序。js应用程序。数据库中大约有6个集合,因此我创建了6个js文件,每个文件都有一个集合作为javascript对象(例如),原型函数处理这些集合上的所有操作。我觉得这是一个很好的建筑。 但我遇到的问题是如何连接到数据库?我应该在每个文件中创建一个连接并使用它们吗?我认为这太过分了,因为mongodb本机驱动程序中的connect会创建一个连接池,而