Python 3.x 在docker compose中使用selenium/standalone chrome连接Python';硒
我一直很难让Python selenium连接到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
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