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

时间:2019-06-11 17:30:52

标签: selenium docker firefox robotframework geckodriver

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

Python-2.7 RobotFramework-3.1.1 SeleniumLibrary(用于机器人)-3.3.1 硒-3.1 壁虎-0.21.0 Firefox-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测试通过,但詹金斯测试失败,并带有上面的错误消息。

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无法建立连接会出现错误。

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

1 个答案:

答案 0 :(得分:0)

在错误消息中,您要打开的地址为172.20.0.158。如果这是您遇到的实际情况,则它属于一个私有范围-172.16.0.0/12更具体地是(例如,范围较广的家庭网络192.168.0.0/24-非-可以从其他网络路由)
如果您的Docker节点无法访问它,则其路由表很可能配置错误。您说您能够打开目标url,但是您可能必须在另一台机器(您的工作机器,是docker主机?)上尝试过,该机器的路由已按预期设置。

由于docker上正在运行sshd,请连接至该端口并尝试使用以下命令打开网址:

curl http://172.20.0.158/

如果成功,则说明是Firefox问题;如果失败并出现类似错误,则为网络配置。
在ssh会话中,您可以使用以下命令打印路由表:

ip route

(或netstat -rn(对于“老派” :)输出格式)。