testcontainers-python icon indicating copy to clipboard operation
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: }

Open arne-cl opened this issue 6 years ago • 0 comments

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

arne-cl avatar Dec 07 '19 18:12 arne-cl