我試圖讓我的測試運行器應用程序完全Docker化。我使用公共集線器和節點圖像來創建一個可以正常工作的Selenium Grid - 我可以在Dockerized Grid上本地運行我的測試。現在,我需要做的就是Dockerize我的測試應用程序代碼,並在網格中運行它。我創建了一個docker-compose文件來設置網格,然後運行測試代碼。不幸的是,當測試從Docker容器運行時,他們似乎無法連接到集線器。我檢查了測試運行器容器的日誌,並從測試的第一步看到了一些輸出。然後,它掛在那兒了1分鐘左右,並輸出以下內容:如何在Docker容器的網格上運行硒UI測試?
Net::ReadTimeout (Net::ReadTimeout)
我炮轟進泊塢窗測試運行容器,並能夠從那裏ping通樞紐,所以我相信測試運行可以跟樞紐。我指定像這樣我的驅動程序配置:
Capybara.register_driver :remote_hub_chrome do |app|
caps = Selenium::WebDriver::Remote::Capabilities.chrome
caps.version = "59.0.3071.115"
caps.platform = "LINUX"
Capybara::Selenium::Driver.new(
app,
:browser => :chrome,
:url => "http://hub-container:4444/wd/hub",
:desired_capabilities => caps
)
end
正如你所看到的,它會嘗試打轂容器域,它應該可以,因爲我可以從容器內ping通。
我沒有看到瀏覽器節點容器上的任何日誌信息,所以它似乎甚至沒有試圖達成。我能夠在Docker容器以外的本地機器上運行完全相同的測試。唯一的區別是我必須將hub-container更改爲localhost,因爲我不再從容器中運行。
有沒有人有任何想法,爲什麼我不能從碼頭集裝箱內運行測試?
撰寫文件:
version: "3"
services:
hub:
image: selenium/hub
ports:
- "4444:4444"
networks:
- ui-test
firefox:
image: selenium/node-firefox-debug
ports:
- "5900"
depends_on:
- hub
environment:
- HUB_PORT_4444_TCP_ADDR=hub
- HUB_PORT_4444_TCP_PORT=4444
networks:
- ui-test
chrome:
image: selenium/node-chrome-debug
ports:
- "5900"
depends_on:
- hub
environment:
- HUB_PORT_4444_TCP_ADDR=hub
- HUB_PORT_4444_TCP_PORT=4444
networks:
- ui-test
test-runner:
image: test-runner
depends_on:
- hub
- chrome
- firefox
networks:
- ui-test
networks:
ui-test:
driver: bridge
發佈您的撰寫文件 –
添加撰寫文件 – Barodapride