Geckodriver / Firefox在Docker容器中运行Robot Framework Selenium测试时



作为项目构建管道的一部分,我们需要使用 Robot Framework 和 Docker 运行一系列 ssh/web 验收测试。目前,我们正在创建一个 docker 容器,并在 docker 容器内运行 ssh 和 selenium Web 测试。

蟒蛇 - 2.7 机器人框架 - 3.1.1 硒库(机器人用) - 3.3.1 硒 - 3.1 壁虎司机 - 0.21.0 火狐 - 60.7.0

当我尝试点击IP地址时,我不断遇到此错误:

WebDriverException: Message: Reached error page: about:neterror?e=connectionFailure&u=http%3A//172.20.0.158/&c=UTF-8&f=regular&d=Firefox%20can%E2%80%99t%20establish%20a%20connection%20to%20the%20server%20at%20172.20.0.158.

最初,我怀疑这可能与使用不兼容的Selenium,GeckoDriver和Firefox库版本的问题有关。但是,经过一些测试,我能够点击一些地址,例如 http://www.google.com,但不能点击 IP 地址。

以下是以下两个测试: Google 测试通过,但 Jenkins 测试失败,并显示上面的错误消息。

Google Test
Open Browser    http://www.google.com   ff
Page Should Contain     Google
Close Browser
Jenkins Test
Open Browser    http://100.00.00.00   ff
Page Should Contain     Jenkins
Close Browser

(我没有输入实际的IP地址)

Jenkins 测试的 IP 地址,当我在浏览器中访问它时,会命中 Jenkins 服务器,所以我知道 IP 是正确的。我只是不确定为什么Firefox无法建立连接会出现错误。

如果您需要更多信息,请告诉我 - 我可以提供。谢谢!

在错误消息中,您尝试打开的地址是 172.20.0.158。如果这是您正在点击的实际范围,那么它位于其中一个专用范围内 - 更具体地说是 172.16.0.0/12(例如,在家庭网络中更流行的范围 192.168.0.0/24 - 无法从其他网络路由)。
如果您的 docker 节点无法访问它,则其路由表很可能配置错误。您说您可以打开目标URL,但是您可能必须从另一台机器(您的工作机器,docker主机?)尝试,该机器的路由已按预期设置。

由于 docker 上运行了 sshd,请连接到它并尝试使用以下方法打开 url:

curl http://172.20.0.158/

如果成功,那么这是一个Firefox问题;如果它失败并出现类似的错误,那么这是一个网络配置。
在 ssh 会话中,您可以使用以下命令打印路由表:

ip route

(或者,netstat -rn"老派":)输出格式)。

最新更新