【问题标题】:PHPUnit Selenium tests fail on Docker localhost and pass using public IPPHPUnit Selenium 测试在 Docker localhost 上失败并使用公共 IP 通过
【发布时间】:2016-12-31 16:03:40
【问题描述】:

我正在尝试使用 Docker 和 Selenium Grid 设置一个自动化测试平台。 在下图中,您可以看到我正在使用的结构。 最上面是在 Compute Engine 上运行的 ubuntu 服务器。 左边是一个运行 ubuntu 14.04 的 docker 容器。 该容器使用 Google App Engine 在 localhost:8080 上运行我们的项目。 右边是 Selenium Hub,有两个节点在端口 4444 上运行。

从主机到 docker 以及到 selenium 集线器都有端口转发。分别在 32772 和 32768 上。

在运行我的 Selenium 测试时,我将它们发送到集线器,集线器又将在 docker 的本地主机上运行测试。 我的问题是,当我告诉集线器在 172.17.0.2:8080 上运行测试时,它会打开启动屏幕,但无法提交任何表单。 当我提交表单时,文本区域会被清除。就像页面以某种方式刷新一样。奇怪的是,当我像 xx.xx.xx.xx:32772 这样告诉集线器使用主机的外部 ip 和 docker 的端口时,它确实有效。 它具有所有功能。但是出于性能和自动化原因,我想在内部 IP 地址上运行它。

任何帮助将不胜感激。

泰恩

【问题讨论】:

  • 您是如何将容器端口绑定到主机端口的?
  • 我已经尝试了两种方法,将它们映射到我选择的端口,例如 'docker run -p 8888:8080 myimage' ,但在这种情况下,它是通过自动端口转发完成的。所以只有 -p 8080 标签。
  • 如何提供内容?你在使用 nginx 吗?如果是这样的话。配置是什么?
  • 如果您的意思是托管在什么网站上,它就是 Google App Engine SDK。
  • 我问是因为主机 ip 可能对您的应用程序而不是基础设施很重要。例如,如果您在 nginx 中定义主机名,它不会响应该特定请求的其他主机名。

标签: selenium networking docker ip phpunit


【解决方案1】:

问题出在我的 .env 文件中。会话域设置为主机 ip 而不是内部 ip 地址。通过更改它,网站可以正常运行。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-05-02
    • 2014-02-24
    • 2012-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多