2016-10-23 8 views
3

Ich versuche, meine Tests mit Selenium Docker zu laufen, ich einen lokalen Grunzen-Server auf Port 9000 ausgeführt haben, I‘ins Leben gerufen, die folgende Selen Docker:Der Versuch, localhost zu erreichen von innen Selen Docker

docker run -d -p 4444:4444 -p 5900:5900 selenium/standalone-chrome-debug 

Dann habe ich meine Tests (mit Capybara) gestartet und VNC geöffnet, um die Tests zu sehen, aber alles, was ich bekomme, ist Chrom Messgae "Diese Seite kann nicht erreicht werden".

cabybara.rb:

isWindows = (/cygwin|mswin|mingw|bccwin|wince|emx/ =~ RUBY_PLATFORM) != nil 

require 'capybara/rspec' 
require 'capybara' 
require 'capybara/dsl' 
require_relative 'sinatra_proxy' 
require 'selenium/webdriver' 
require 'selenium/webdriver/remote/http/curb' if !isWindows 

Capybara.register_driver :selenium_chrome do |app| 
    http_client = isWindows ? nil : Selenium::WebDriver::Remote::Http::Curb.new 
    options = { 
     http_client: http_client, 
     browser: :chrome, 
     # service_log_path: 'chromedriver.out', # Enable Selenium logs 
     switches: ["--disable-web-security", '--user-agent="Chrome under Selenium for Capybara"'] 
    } 
    options[:url] = "http://172.17.0.2:4444/wd/hub" 
    Capybara::Selenium::Driver.new app, options 

end 

Capybara.default_driver = :selenium_chrome 
Capybara.app = SinatraProxy.new 
Capybara.app_host = "http://127.0.0.1:9000" 
Capybara.server_host = '0.0.0.0' 

ip addr zeigen docker0

ip addr show docker0                 
6: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP group default 
    link/ether 02:22:ec:65:9e:f1 brd ff:ff:ff:ff:ff:ff 
    inet 172.17.0.1/16 scope global docker0 
     valid_lft forever preferred_lft forever 
    inet6 fe40::42:ecdd:fe73:9ef4/64 scope link 
     valid_lft forever preferred_lft forever 

benötigt, um die IP-Adresse des Docker Gastgeber sein, verwendet:

ip route show | grep docker0 | awk '{print $9}' 

für Capybara.app_host (DOCKER_HOST_IP: PORT) und Capybara.server_host (DOCKER_HOST_IP)

+0

Haben Sie die Antworten von dieser Frage versucht [Von innen einen Docker-Container, wie verbinde ich mich mit dem localhost der Maschine?] (http://stackoverflow.com/questions/24319662/from-inside-of-a-docker-container-how-do-i-connect-to -the-localhost-of-the-mach) – R0MANARMY

+0

Ja ich habe, mit net = Host mit Selen Image nicht wor ks, schließt der Container aus irgendeinem Grund –

Antwort

2

Verwendung:

Capybara.app_host = "http://yourhostip:9000" 

nicht localhost. Für docker Container ist localhost selbst.

Auch empfehle ich nicht Docker durch seine interne IP-Aufruf verwenden nur:

options[:url] = "http://localhost:4444/wd/hub" 

Aber zuerst

Grüße der ehemalige Problem lösen

+0

Als App-Host ist einfach die URL vor der Besuchsmethode, habe ich versucht, die Host-IP direkt aus dem Selen in der VNC, aber es hat nicht funktioniert. –

+0

Können Sie von einem anderen Computer im Netzwerk auf Ihren Grunt-Server zugreifen? Verwenden Sie in diesem Fall die gleiche IP-Adresse, mit der Sie die Verbindung hergestellt haben. Wenn nicht versuchen, grunt Server von außen sichtbar zu machen –

+0

Ich habe keine andere Maschine, es ist nur ein lokaler Server für die App, Internet-Zugang von innerhalb des Containers ist ok übrigens. –

Verwandte Themen