Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/python-3.x/18.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 3.x 在docker compose中使用selenium/standalone chrome连接Python';硒_Python 3.x_Selenium Webdriver_Docker Compose - Fatal编程技术网

Python 3.x 在docker compose中使用selenium/standalone chrome连接Python';硒

Python 3.x 在docker compose中使用selenium/standalone chrome连接Python';硒,python-3.x,selenium-webdriver,docker-compose,Python 3.x,Selenium Webdriver,Docker Compose,我一直很难让Python selenium连接到selenium/standalone chrome,我一直在寻找解决问题的方法。我希望避免使用selenium/hub,但包含它似乎并不能解决我的问题 这是我的docker-compose.yml version: '3.1' networks: web: external: true services: chrome: image: selenium/standalone-chrome:latest hos

我一直很难让Python selenium连接到
selenium/standalone chrome
,我一直在寻找解决问题的方法。我希望避免使用
selenium/hub
,但包含它似乎并不能解决我的问题

这是我的docker-compose.yml

version: '3.1'

networks:
  web:
    external: true

services:

  chrome:
    image: selenium/standalone-chrome:latest
    hostname: chrome
    networks:
      - web
    ports:
      - "5900:5900"
      - "4444:4444"
    privileged: true
    shm_size: 2g

  tests:
    build: ./tests
    networks:
      - web
version: '3.8'

networks:
    web:
      external: true
      driver:  bridge

services:
    chrome:
        image: selenium/standalone-chrome:latest
        hostname: chrome
        networks:
          - web
        privileged: true
        shm_size: 2g
    framework:
        build: .
        networks:
            - web
        depends_on: 
            - chrome
我在测试容器中运行的测试。在运行脚本之前,入口点检查以确保chrome已启动并正在运行

#!/usr/bin/env python3
"""Tests that the remote webdriver works."""
import unittest
from selenium import webdriver
from selenium.webdriver.common.desired_capabilities import DesiredCapabilities


class LocalGoogleTestCase(unittest.TestCase):

    def setUp(self):
        self.browser = webdriver.Chrome()
        self.addCleanup(self.browser.quit)

    def testPageTitle(self):
        self.browser.get('http://www.google.com')
        self.assertIn('Google', self.browser.title)


class RemoteGoogleTestCase(unittest.TestCase):

    def setUp(self):
        self.browser = webdriver.Remote(
            command_executor='http://chrome:4444/wd/hub',
            desired_capabilities=DesiredCapabilities.CHROME)
        self.addCleanup(self.browser.quit)

    def testPageTitle(self):
        self.browser.get('http://www.google.com')
        self.assertIn('Google', self.browser.title)


if __name__ == '__main__':
    unittest.main(verbosity=2)

对于测试结果,
Local
测试成功,仅当尝试使用远程时。有时,我会在路径中发现错误
hub,但该错误是间歇性的

我可以通过
http://server:444/wd/hub
并且可以从那里启动会话和运行脚本

我认为这可能是一个与集装箱无法相互联系有关的问题,我已评估了以下资源,以解决该问题:

我检查过的不起作用的帖子:

谢谢你的关注


更新:在测试容器中,我能够
curlhttp://chrome:4444/wd/hub/status
检索连接已启动并正在运行的状态,这是
entryscript.sh
的一部分,因此我知道容器可以以某种方式相互通信。

首先,当然,我要感谢您所做的一切。在到达这个职位后,它给了我希望,我不是那个试图做这样一件事的人

所以,问题是我能够成功地运行从docker compose到按预期执行的一切

从你的帖子中得到了一些提示,并做了一些更改,它确实起了作用

解决办法来了

文件名:docker-compose.yml

version: '3.1'

networks:
  web:
    external: true

services:

  chrome:
    image: selenium/standalone-chrome:latest
    hostname: chrome
    networks:
      - web
    ports:
      - "5900:5900"
      - "4444:4444"
    privileged: true
    shm_size: 2g

  tests:
    build: ./tests
    networks:
      - web
version: '3.8'

networks:
    web:
      external: true
      driver:  bridge

services:
    chrome:
        image: selenium/standalone-chrome:latest
        hostname: chrome
        networks:
          - web
        privileged: true
        shm_size: 2g
    framework:
        build: .
        networks:
            - web
        depends_on: 
            - chrome
另外,请注意网格url是
http://chrome:4444/wd/hub
有了这种配置上的改变,我能够成功地运行我的代码,也能够发送电子邮件

我希望这能帮助那些坚持docker-compose.yml的人

version: '3.1'

networks:
  web:
    external: true

services:

  chrome:
    image: selenium/standalone-chrome:latest
    hostname: chrome
    networks:
      - web
    ports:
      - "5900:5900"
      - "4444:4444"
    privileged: true
    shm_size: 2g

  tests:
    build: ./tests
    networks:
      - web
version: '3.8'

networks:
    web:
      external: true
      driver:  bridge

services:
    chrome:
        image: selenium/standalone-chrome:latest
        hostname: chrome
        networks:
          - web
        privileged: true
        shm_size: 2g
    framework:
        build: .
        networks:
            - web
        depends_on: 
            - chrome