问题描述
我的AUT在docker容器中运行,其URL为“ http:// localhost:8080 /”。现在,当我使用Zalenium触发测试时,它会启动浏览器,但是当它尝试导航到AUT的URL时,找不到它。是因为我的AUT在一个docker容器中运行,而Zalenium也在一个单独的docker容器中运行,并且它们彼此之间无法通信?
预先感谢。
解决方法
我认为这是应该起作用的方式。理想情况下,您希望容器包含隔离状态,直到您另行声明为止。
针对您的硒脚本,一种快速的解决方案,而不是localhost
,请指定您的<machine name>
。这样,您在zalenium中的脚本将希望通过网络(仍然是您)来解析地址,而不是尝试在其自己的网络环上内部解析localhost。
虽然这可能对您的机器有效,但它是静态的。您可能希望将其编写为解决方案的一部分,以便将其连接到多个。
在Java you can use this中获取正在运行的计算机名称:
InetAddress addr;
addr = InetAddress.getLocalHost();
hostname = addr.getHostName();
或者,要提供一个更便于移植的解决方案,您可能需要查看docker networking pages。
我认为this tutorial可能会对您有所帮助。 “使用独立容器联网”听起来不错。
总之,当您运行docker容器时,需要将它们附加到同一网络。默认值为:
--network bridge
或创建自己的桥:
docker network create --driver bridge MyBridgeName
并使用该网桥名称运行两个容器:
docker run -dit --name MyImageName --network MyBridgeName ImageToRun
docker run -dit --name OtherName --network MyBridgeName OtherImageToRun