Scala Selenium on Docker:在同一个“Docker compose”文件中测试Docker映像
情景:Scala Selenium on Docker:在同一个“Docker compose”文件中测试Docker映像,scala,selenium,docker-compose,selenium-docker,Scala,Selenium,Docker Compose,Selenium Docker,情景: 在localhost:9000上运行我的应用程序的Docker映像 带有Selenium Webdriver的Docker图像 我想要运行的Selenium测试 我是从这个开始的 Docker Compose: version: "3.1" services: my-app: image: pame/play-binding-form-server networks: - mynet ... ports: - "9
- 在
localhost:9000上运行我的应用程序的Docker映像
- 带有Selenium Webdriver的Docker图像
- 我想要运行的Selenium测试
version: "3.1"
services:
my-app:
image: pame/play-binding-form-server
networks:
- mynet
...
ports:
- "9000:9000"
chrome-webdriver:
image: selenium/standalone-chrome:3.141.59-europium
networks:
- mynet
volumes:
- /dev/shm:/dev/shm
ports:
- "4444:4444"
depends_on:
- my-app
networks:
mynet:
docker ps
:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
53ac65c2babd selenium/standalone-chrome:3.141.59-europium "/opt/bin/entry_poin…" 13 minutes ago Up 13 minutes 0.0.0.0:4444->4444/tcp e2e_chrome-webdriver_1
fc0ca2af3148 pame/play-binding-form-server "/pme123/conf/docker…" 17 minutes ago Up 17 minutes 0.0.0.0:9000->9000/tcp, 9443/tcp pme123-forms
d
我的测试看起来像:
import org.openqa.selenium.remote.DesiredCapabilities
import org.openqa.selenium.remote.RemoteWebDriver
val driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"),
DesiredCapabilities.chrome())
driver.get("http://localhost:9000/")
这将返回一个HTML页面:
我尝试了不同的版本,但没有成功
在本地运行webdriver
时,一切正常
这种情况是不可能的还是我错过了什么 这是一个非常经典的问题 由于
myapp
和chromewebdriver
分别位于两个容器上,因此chromewebdrive
无法访问itslocalhost(127.0.0.1)上的myapp
请记住,docker的功能之一是使用容器概念隔离运行环境。也就是说,主机上的localhost
与容器上的不一样,容器a上的localhost
与容器B上的不一样,它们都有自己的localhost
要连接同一网络中的两个容器,只需使用它们的容器名或服务名作为主机名
在您的情况下,
driver.get(“http://my-app:9000/)
@Siyu-谢谢你的帮助!如果你创造一个答案,我可以接受。我仍然有点难以理解为什么http://localhost:4444/wd/hub
然后工作-它不需要主机名,比如http://chrome-webdriver:4444/wd/hub