2017-08-09 6 views
0

J'ai conteneurisé une application qui est le pilote d'essai d'un test de sélénium automatisé. Le serveur Selenium (également appelé Selenium Hub) fonctionne dans un autre conteneur, ainsi que dans le nœud Firefox, sous localhost: 4444. Mais mon application ne parvient pas à atteindre: Docker Container ne peut pas atteindre le port local 4444. Pourquoi?

Build info: version: 'unknown', revision: 'unknown', time: 'unknown' 
 
System info: host: '10d3b5fd1010', ip: '172.17.0.2', os.name: 'Linux', os.arch: 'amd64', os.version: '3.16.0-4-amd64', java.version: '1.8.0_11   1' 
 
Driver info: driver.version: RemoteWebDriver 
 
     at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:665) 
 
     at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:249) 
 
     at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:131) 
 
     at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:158) 
 
     at de.services.impl.TestSetupFactory.getWebDriver(TestSetupFactory.java:408) 
 
     at de.services.impl.TestSetupFactory.getSeleniumService(TestSetupFactory.java:279) 
 
     at de.services.impl.AutomationServiceImpl.executeTests(AutomationServiceImpl.java:220) 
 
     at de.start.Start.main(Start.java:25) 
 
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:4444 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: C   onnection refused (Connection refused) 
 
     at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:158) 
 
     at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:353)

j'ai commencé ces conteneurs via docker-Compose:

version: '2' 
 
services: 
 
    hub: 
 
    image: selgrid:1.1 
 
    ports: 
 
     - "4444:4444" 
 

 
    firefox: 
 
    #pull latest from docker hub 
 
    image: selenium/node-firefox 
 
    volumes: 
 
     - /dev/urandom:/dev/random 
 
    depends_on: 
 
     - hub 
 
    environment: 
 
     - HUB_PORT_4444_TCP_ADDR=hub 
 
     - HUB_PORT_4444_TCP_PORT=4444 
 
    testautomation: 
 
    #run testautomation app 
 
    image: volumetest 
 
    links: 
 
     - "hub" 
 
    ports: 
 
     - "9005:9005"

Je crois qu'il ya une erreur dans mon docker-compose, mais je ne peux pas le comprendre. S'il vous plaît aider! btw: Je cours sous Windows 7 et utilise Docker avec une machine virtuelle Vagrant. Dans mon fichier Vagrantfile, j'ai mis en correspondance les ports 4444 et 9005 avec le système hôte. Si j'ouvre mon navigateur local et atteins pour localhost: 4444, je peux voir la console de grille de sélénium. Pourquoi cela ne fonctionnera pas à partir de mon conteneur d'applications?

Répondre

1

Dans votre conteneur d'application, localhost signifie le conteneur actuel. Vous devez donc utiliser le nom du service à la place. Ce qui dans votre cas est hub

Connectez-vous donc à hub:4444

+0

D'abord mon conteneur ne pouvait même pas atteindre centre: 4444, mais quand j'ai commencé tout à partir d'un seul fichier Compose docker et Linked le moyeu à mon conteneur d'application, tout juste a bien fonctionné. Merci – Timo

0

Je suis confronté à la même question après avoir déménagé à docker-Compose version2. Ce journal que je reçois

Connect to localhost:4444 [localhost/127.0.0.1] failed: Connection refused 
 

 
org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.

Voici comment fichier YML docker-de composition ressemble à:

version: '2' 
 
services: 
 
    seleniumhub: 
 
    image: selenium/hub 
 
    ports: 
 
     - 4444:4444 
 
    firefoxnode: 
 
    image: selenium/node-firefox-debug 
 
    ports: 
 
     - 5900 
 
    environment: 
 
     - HUB_PORT_4444_TCP_ADDR=seleniumhub 
 
     - HUB_PORT_4444_TCP_PORT=4444 
 
    webdrivertests: 
 
    image: vodqa/gridtests 
 
    volumes: 
 
     - ./temp:/usr/src/app/target 
 
    environment: 
 
     - HUB_PORT_4444_TCP_ADDR=seleniumhub 
 
     - HUB_PORT_4444_TCP_PORT=4444 
 
    command: bash -c "cd /usr/src/app && mvn test"

Dans mon test, je tente d'accéder à la moyeu utilisant:

new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),desiredCapabilitiesff );

+0

Je l'ai eu le travail. Merci @Tarun Lalwani. Juste changé 'http: // localhost: 4444/wd/hub' à 'http: // seleniumhub: 4444/wd/hub' –