【发布时间】:2020-05-14 18:41:22
【问题描述】:
我在让 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
我在测试容器中运行的测试。在运行脚本之前,入口点会检查以确保 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 not found in PATH,但该错误是间歇性的。
我可以通过http://server:444/wd/hub 访问网络界面,并且可以从那里启动会话和运行脚本。
我认为这可能是与容器无法相互联系有关的问题,我已经评估了以下资源以尝试解决该问题:
- https://forums.docker.com/t/cant-connect-to-other-containers-inside-docker-network/66512
- https://forums.docker.com/t/docker-compose-doesnt-let-my-images-connect-with-each-other/54951
我检查过的帖子没有用:
- Docker: using container with headless Selenium Chromedriver
- docker selenium/standalone-chrome unable to connect to docker web server
- Easiest way to run Selenium tests in a Docker container over Jenkins CI
- Selenium webdriver.Remote driver does not work with tor proxy(webdriver.Chrome does)
- How do I link and scale multiple docker containers?
- How to point RemoteWebDriver to one of the multiple standalone docker selenium standalone chrome browsers?
感谢收看!
更新:在测试容器中,我可以通过curl http://chrome:4444/wd/hub/status 检索连接已启动并正在运行的状态,这是entryscript.sh 的一部分,所以我知道容器可以相互通信以某种方式。
【问题讨论】:
标签: python-3.x selenium-webdriver docker-compose