我正在进行Selenium测试。
我试图封装所有的测试在一个docker容器。
测试与前端通信以做出一些动作(我的意思是测试它们)。
Selenium运行的测试位于docker容器中。
前端在本地主机上运行(而不是在docker中)
在我的Selenium docker中,我用主机的ip指定了前端的url: 172.17.0.1,我甚至尝试使用"host.docker.internal",但它根本不起作用。
但是,如果我手动运行容器并执行"curl http://172.17.0.1:{FRONTEND_PORT}"我收到了回复!
意味着docker实际上可以与前端通信。
但是对于Selenium测试,它不起作用…
你有解决这个问题的办法吗?
编辑:
ifconfig output in my docker:
eth0: flags=4163<UP,BROADCAST,RUNNING,MULTICAST> mtu 1500
inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255
ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet)
RX packets 97 bytes 259089 (253.0 KiB)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 65 bytes 4469 (4.3 KiB)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
lo: flags=73<UP,LOOPBACK,RUNNING> mtu 65536
inet 127.0.0.1 netmask 255.0.0.0
loop txqueuelen 1000 (Local Loopback)
RX packets 0 bytes 0 (0.0 B)
RX errors 0 dropped 0 overruns 0 frame 0
TX packets 0 bytes 0 (0.0 B)
TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
OK!我找到答案了!
提醒一下:Selenium在容器中进行测试。
由于是WebDriver在前端执行操作,因此前端的调用来自selenium容器的网络!
在我的例子中:前端实际上是这个url的后端http://localhost:8080/myrequestothebackend
但是当chromedriver从selenium容器发出请求时,前端调用没有工作,因为它针对的是selenium容器的本地主机(而不是计算机的"真正"本地主机!)