2017-03-20 2 views
0

Ich bin im Versuch, meine Behat Tests in Selenumgebung einzurichten. Denn jetzt habe ich mit Docker Ausgangs Selen,Behat mit Selen 2 nicht mit Localhost

Das ist mein Docker-compose.yml config:

hub: 
    image: selenium/hub 
    ports: 
    - "4444:4444" 

chrome: 
    image: selenium/node-chrome 
    links: 
    - hub 

Und ich habe meine behat.yml konfiguriert:

default: 
    suites: 
     default: 
      paths: 
       features: 'tests/features' 
       bootstrap: 'tests/features/bootstrap' 
      contexts: 
       - FeatureContext: ~ 
    extensions: 
     Behat\Symfony2Extension: ~ 
     Behat\MinkExtension: 
      base_url: http://localhost 
      selenium2: ~ 

Und wenn ich meine starten Tests mit @javascript (ich nehme an diese Einführung Selen env) i erhalten Fehler:

Could not open connection: Curl error thrown for http POST to http://localhost:4444/wd/hub/session with params: {"desiredCapabilities":{"tags":["cli","PHP 7.0.15-1+deb.sury.org~trusty+1"],"browser":"firefox","ignoreZoomSetting":false,"name":"Behat feature suite","browserName":"firefox"}}

Failed to connect to localhost port 4444: Connection refused (Behat\Mink\Exception\DriverException)

Wenn ich aufbekommeni erhalten:

{"status":13,"value":{"message":"Session [(null externalkey)] not available and is not among the last 1000 terminated sessions.\nActive sessions are[]","class":"org.openqa.grid.common.exception.GridException","stackTrace":[{"fileName":"ActiveTestSessions.java","className":"org.openqa.grid.internal.ActiveTestSessions","methodName":"getExistingSession","lineNumber":110},{"fileName":"Registry.java","className":"org.openqa.grid.internal.Registry","methodName":"getExistingSession","lineNumber":404},{"fileName":"RequestHandler.java","className":"org.openqa.grid.web.servlet.handler.RequestHandler","methodName":"getSession","lineNumber":232},{"fileName":"RequestHandler.java","className":"org.openqa.grid.web.servlet.handler.RequestHandler","methodName":"process","lineNumber":117},{"fileName":"DriverServlet.java","className":"org.openqa.grid.web.servlet.DriverServlet","methodName":"process","lineNumber":83},{"fileName":"DriverServlet.java","className":"org.openqa.grid.web.servlet.DriverServlet","methodName":"doGet","lineNumber":61},{"fileName":"HttpServlet.java","className":"javax.servlet.http.HttpServlet","methodName":"service","lineNumber":687},{"fileName":"HttpServlet.java","className":"javax.servlet.http.HttpServlet","methodName":"service","lineNumber":790},{"fileName":"ServletHolder.java","className":"org.seleniumhq.jetty9.servlet.ServletHolder","methodName":"handle","lineNumber":808},{"fileName":"ServletHandler.java","className":"org.seleniumhq.jetty9.servlet.ServletHandler","methodName":"doHandle","lineNumber":587},{"fileName":"SessionHandler.java","className":"org.seleniumhq.jetty9.server.session.SessionHandler","methodName":"doHandle","lineNumber":221},{"fileName":"ContextHandler.java","className":"org.seleniumhq.jetty9.server.handler.ContextHandler","methodName":"doHandle","lineNumber":1127},{"fileName":"ServletHandler.java","className":"org.seleniumhq.jetty9.servlet.ServletHandler","methodName":"doScope","lineNumber":515},{"fileName":"SessionHandler.java","className":"org.seleniumhq.jetty9.server.session.SessionHandler","methodName":"doScope","lineNumber":185},{"fileName":"ContextHandler.java","className":"org.seleniumhq.jetty9.server.handler.ContextHandler","methodName":"doScope","lineNumber":1061},{"fileName":"ScopedHandler.java","className":"org.seleniumhq.jetty9.server.handler.ScopedHandler","methodName":"handle","lineNumber":141},{"fileName":"HandlerWrapper.java","className":"org.seleniumhq.jetty9.server.handler.HandlerWrapper","methodName":"handle","lineNumber":97},{"fileName":"Server.java","className":"org.seleniumhq.jetty9.server.Server","methodName":"handle","lineNumber":499},{"fileName":"HttpChannel.java","className":"org.seleniumhq.jetty9.server.HttpChannel","methodName":"handle","lineNumber":310},{"fileName":"HttpConnection.java","className":"org.seleniumhq.jetty9.server.HttpConnection","methodName":"onFillable","lineNumber":257},{"fileName":"AbstractConnection.java","className":"org.seleniumhq.jetty9.io.AbstractConnection$2","methodName":"run","lineNumber":540},{"fileName":"QueuedThreadPool.java","className":"org.seleniumhq.jetty9.util.thread.QueuedThreadPool","methodName":"runJob","lineNumber":635},{"fileName":"QueuedThreadPool.java","className":"org.seleniumhq.jetty9.util.thread.QueuedThreadPool$3","methodName":"run","lineNumber":555},{"fileName":"Thread.java","className":"java.lang.Thread","methodName":"run","lineNumber":745}]}}

ich sein ein Problem mit der Konfiguration von Behat nehme an, aber ich bin nicht sicher, da im mit Behat und Selen gerade erst begonnen. Wenn jemand eine Ahnung hat, was falsch ist, würde ich mich sehr freuen, Hilfe zu bekommen.

+0

Verwandte: [Session nicht zur Verfügung und ist nicht unter den letzten 1000 beendet Sitzungen] (https://stackoverflow.com/q/24446745 Beispiel eines Test env, dann können Sie etwas in Ihrem behat.yml wie zu tun/55075) – kenorb

Antwort

0

Sie vermissen die wd_host und capabilities Optionen

versuchen so etwas wie:

default: 
    suites: 
     default: 
      paths: 
       features: 'tests/features' 
       bootstrap: 'tests/features/bootstrap' 
      contexts: 
       - FeatureContext: ~ 
    extensions: 
     Behat\Symfony2Extension: ~ 
     Behat\MinkExtension: 
      selenium2: 
       browser: "chrome" 
       wd_host: http://hub:4444/wd/hub 

Auch Ihr Hub, muss in der Lage sein, Ihre localhost zuzugreifen ..... wo die Tests ausgeführt werden.

Zuerst versuchen Sie, Ihre Apache/Nginx usw. Ihres Servers auschecken, um zu sehen, ob Sie Zugriff/Besuche von der Selenmaschine erhalten.

so etwas wie tail -f /var/log/apache/access.log

oder wo auch immer Sie Ihre Dateien speichern .... wenn Sie nichts bekommen, dann offensichtlich Selen Zugriff ist nicht Ihre Maschine

Ein anderer Ansatz wäre, den Code zu implementieren für

Behat\MinkExtension: 
     base_url: http://my_test_host.com 
+0

Nun, ich habe den ersten Ansatz verwendet. Scheint so, als ob es funktioniert hat. Aber immer noch nicht genug, jetzt bekomme ich Fehler: 'Konnte Verbindung nicht öffnen: Fehler beim Weiterleiten der neuen Sitzung Leere Pool der VM für die Einrichtung Fähigkeiten [{browser = firefox, name = Behat feature suite, browserName = chrome, ignoreZoomSetting = false, tags = [cli, PHP 7.0.15-1 + deb.sury.org ~ vertrauenswürdig + 1]}] (Behat \ Mink \ Exception \ DriverException) ' – Megami

+0

Ich habe meinen Post bearbeitet ... bekommst du irgendwelche Treffer von Selen auf dein Server? Versuchen Sie andernfalls, den Wert von 'base_url' in' behat.yml' in 'base_url: http: // whtaever_your_php_container_is_called_indocker_compose' zu ​​ändern. – Confidence

+0

Ich habe Protokolle überprüft und es scheint, als ob meine Tests nicht einmal auf Selen treffen. Ich habe 'base_url: http: // localhost' zu meiner' behat.yml' hinzugefügt. Aber immer noch denselben Fehler. – Megami