0

我的 AUT 在 docker 容器中运行,它的 URL 是 "http://localhost:8080/" 。现在,当我使用 Zalenium 触发测试时,它会启动浏览器,但是当它尝试导航到 AUT 的 URL 时却找不到它。是不是因为我的 AUT 在 docker 容器中运行,而 Zalenium 也在单独的 docker 容器中运行,并且它们都无法相互通信?

提前致谢。

4

1 回答 1

0

我认为这就是它应该如何工作的方式。理想情况下,您希望包含隔离,直到您另有说明。

一个快速的解决方案,在你的 selenium 脚本上,而不是localhost指定你的<machine name>. 这样,您在 zalenium 中的脚本将寻求通过网络(仍然是您)解析地址,而不是尝试在自己的网络环上内部解析 localhost。

虽然这可能适用于您的机器,但它有点静态。您可能希望将其作为解决方案的一部分编写脚本,以便连接到多个。

在java中,您可以使用它来获取正在运行的机器名称:

    InetAddress addr;
    addr = InetAddress.getLocalHost();
    hostname = addr.getHostName();

或者,要制作更便携的解决方案,您可能需要查看docker 网络页面

我认为本教程可能会对您有所帮助。“使用独立容器联网”听起来是对的。

总而言之,当您运行 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
于 2020-08-18T08:43:05.883 回答