testcontainers-python
testcontainers-python copied to clipboard
Docker compose example throws WebDriverException: Message: Error forwarding the new session Empty pool of VM for setup Capabilities {browserName: chrome, version: }
I tried to follow the Docker compose example in the documentation, but only get this error:
$ python test_selenium_grid.py
⠏Creating network "testcontainers_default" with the default driver
Creating testcontainers_hub_1 ... done
Creating testcontainers_firefox_1 ... done
Creating testcontainers_chrome_1 ... done
Stopping testcontainers_chrome_1 ... done
Stopping testcontainers_firefox_1 ... done
Stopping testcontainers_hub_1 ... done
Removing testcontainers_chrome_1 ... done
Removing testcontainers_firefox_1 ... done
Removing testcontainers_hub_1 ... done
Removing network testcontainers_default
Traceback (most recent call last):
File "test_selenium_grid.py", line 12, in <module>
desired_capabilities=webdriver.DesiredCapabilities.CHROME)
File "/home/arne/.virtualenvs/testcontainers/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 157, in __init__
self.start_session(capabilities, browser_profile)
File "/home/arne/.virtualenvs/testcontainers/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 252, in start_session
response = self.execute(Command.NEW_SESSION, parameters)
File "/home/arne/.virtualenvs/testcontainers/lib/python3.7/site-packages/selenium/webdriver/remote/webdriver.py", line 321, in execute
self.error_handler.check_response(response)
File "/home/arne/.virtualenvs/testcontainers/lib/python3.7/site-packages/selenium/webdriver/remote/errorhandler.py", line 242, in check_response
raise exception_class(message, screen, stacktrace)
selenium.common.exceptions.WebDriverException: Message: Error forwarding the new session Empty pool of VM for setup Capabilities {browserName: chrome, version: }
Stacktrace:
at org.openqa.grid.web.servlet.handler.RequestHandler.process (RequestHandler.java:118)
at org.openqa.grid.web.servlet.DriverServlet.process (DriverServlet.java:85)
at org.openqa.grid.web.servlet.DriverServlet.doPost (DriverServlet.java:69)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:707)
at javax.servlet.http.HttpServlet.service (HttpServlet.java:790)
at org.seleniumhq.jetty9.servlet.ServletHolder.handle (ServletHolder.java:865)
at org.seleniumhq.jetty9.servlet.ServletHandler.doHandle (ServletHandler.java:535)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.handle (ScopedHandler.java:146)
at org.seleniumhq.jetty9.security.SecurityHandler.handle (SecurityHandler.java:548)
at org.seleniumhq.jetty9.server.handler.HandlerWrapper.handle (HandlerWrapper.java:132)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:257)
at org.seleniumhq.jetty9.server.session.SessionHandler.doHandle (SessionHandler.java:1595)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextHandle (ScopedHandler.java:255)
at org.seleniumhq.jetty9.server.handler.ContextHandler.doHandle (ContextHandler.java:1340)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:203)
at org.seleniumhq.jetty9.servlet.ServletHandler.doScope (ServletHandler.java:473)
at org.seleniumhq.jetty9.server.session.SessionHandler.doScope (SessionHandler.java:1564)
at org.seleniumhq.jetty9.server.handler.ScopedHandler.nextScope (ScopedHandler.java:201)
at org.seleniumhq.jetty9.server.handler.ContextHandler.doScope (ContextHandler.java:1242)
These are the files that I use:
docker-compose.yml
version: '3.3'
services:
hub:
image: selenium/hub
ports:
- "4444:4444"
firefox:
image: selenium/node-firefox
links:
- hub
expose:
- "5555"
chrome:
image: selenium/node-chrome
links:
- hub
expose:
- "5555"
test_selenium_grid.py
from selenium import webdriver
from testcontainers.compose import DockerCompose
compose = DockerCompose(".")
with compose:
host = compose.get_service_host("hub", 4444)
port = compose.get_service_port("hub", 4444)
driver = webdriver.Remote(
command_executor=("http://{}:{}/wd/hub".format(host, port)),
desired_capabilities=webdriver.DesiredCapabilities.CHROME)
driver.get("http://automation-remarks.com")
and these are my software versions:
$ docker version
Client:
Version: 18.09.7
API version: 1.39
Go version: go1.10.4
Git commit: 2d0083d
Built: Fri Aug 16 14:19:38 2019
OS/Arch: linux/amd64
Experimental: false
Server:
Engine:
Version: 18.09.7
API version: 1.39 (minimum version 1.12)
Go version: go1.10.4
Git commit: 2d0083d
Built: Thu Aug 15 15:12:41 2019
OS/Arch: linux/amd64
Experimental: false
$ docker-compose version
docker-compose version 1.20.1, build 5d8c71b
docker-py version: 3.1.4
CPython version: 3.6.4
OpenSSL version: OpenSSL 1.0.1t 3 May 2016
$ pip freeze
attrs==19.3.0
blindspin==2.0.1
certifi==2019.11.28
chardet==3.0.4
colorama==0.4.3
crayons==0.3.0
docker==4.1.0
idna==2.8
importlib-metadata==1.2.0
more-itertools==8.0.2
packaging==19.2
pluggy==0.13.1
py==1.8.0
pyparsing==2.4.5
pytest==5.3.1
requests==2.22.0
selenium==3.141.0
six==1.13.0
testcontainers==2.5
urllib3==1.25.7
wcwidth==0.1.7
websocket-client==0.56.0
wrapt==1.11.2
zipp==0.6.0