2017-10-13 23 views
0

我有一個節點應用程序,我可以從node server.js開始並在localhost:9000上訪問。如何使用Selenium Docker映像連接到本地主機站點?

我有一系列硒運行良好的e2e測試,但我現在正在尋找使用docker selenium鏡像。

我開始泊塢窗圖像與docker run -d -p 4444:4444 selenium/standalone-chrome

,我改變了我的端對端測試代碼的樣子:

var driver = new webdriver.Builder(). 
    usingServer('http://127.0.0.1:4444/wd/hub'). 
    withCapabilities(webdriver.Capabilities.chrome()). 
    build(); 

    // driver.manage().window().setSize(1600, 1000); 

    return driver.get('http://127.0.0.1:9000') 
    .then(function() { 
     // driver.executeScript('localStorage.clear();') 
     return driver 
    }); 

但硒無法連接到應用程序了!

(如果我取消註釋的setSize線,程序無法在那裏)

我有服務器的向上運行,並在本地主機是確實可以訪問:9000。我如何讓我的測試正確使用dockerized selenium,並正確指向本地主機上的服務器?

+0

您正在使用哪個主機操作系統? –

回答

0

在主機上,本地主機無法訪問Docker端點。您是否嘗試使用0.0.0.0而不是127.0.0.1

+0

我更改爲'usingServer('http://0.0.0.0:4444/wd/hub').',測試仍然無法運行。我有一個打印身體的測試,它顯示「無法訪問此網站」。 – swagrov

0

如果您使用的是Mac,你可以嘗試從netstat的進去泊塢窗圖像網關:

netstat -nr | grep '^0\.0\.0\.0' | awk '{print $2}' 

或寫從終端ifconfig,並獲得INET地址,嘗試與代替127.0.0.1

0

什麼是碼頭ps命令返回此容器? 它顯示爲「0.0.0.0:4444->4444/tcp」。

你可以運行sudo iptables -L -n並在「Chain DOCKER」部分下面進行驗證。 接受TCP - 0.0.0.0/0 XXXX TCP DPT:4444

0

如果你想你的容器網絡行爲要像你的主機上使用泊塢窗運行--network =主機

0

只是爲了確保我的理解 - 硒在Docker中運行,並嘗試訪問運行在服務器上的節點應用程序?

在這種情況下,這是兩個不同的「服務器」,所以你需要使用真正的IP地址(或DNS名稱)

通過服務器的IP作爲參數傳遞給dockerized硒圖像最簡單的事情可能會作爲環境變量

相關問題