"连接被拒绝"尝试使用Headless Firefox运行Selenium时

时间:2017-11-09 22:31:50

标签: selenium firefox centos xvfb geckodriver

我使用的每个项目的版本如下:Selenium 3.4.0,适用于Linux 64和Firefox 52.4.0的GeckoDriver v0.19.0。

我在本网站曾问过的第一个问题。我通常能够通过简单的潜伏来解决问题,但是这个问题让我真正为我付出了代价。

我正在尝试将Jenkins设置为" mvn clean test"一个将运行Selenium(使用版本3.4.0)测试" test"的项目。本质上,该项目是一组使用Selenium与另一个项目交互的类。我已将JUnit测试附加到此项目,以便通过构建它,我可以使用我创建的测试套件。

我可以使用Chrome或Firefox在我的本地计算机上执行此操作,但我想让Jenkins每晚自动执行此操作。我在Centos 7服务器上安装了Jenkins,我试图让这个项目与无头浏览器一起工作。我与PhantomJS有一些不同的问题(幻影中的DOM是空白的),所以我也尝试使用无头Firefox(使用版本52.4.0)。以下是我采取的一般步骤:

  1. 在CentOS上安装Xvfb。
  2. 在CentOS上安装Firefox(52.4.0)。
  3. 运行" Xvfb:99 -ac&"
  4. 运行"导出DISPLAY =:99"
  5. 使用" mvn clean test"。
  6. 运行项目

    (我已经,我会在Jenkins上尝试第3-5步,但我只是坚持让它单独使用CentOS。)

    项目开始顺利:

            

    T E S T S

         

    。 。 。 。 。 。
      运行com。*****。*****。workflows.HappyPathTest
      。 。 。 。 。 。
      1510266036943 Marionette INFO在端口2828上收听

    然后在此之前坐下来片刻:

      

    org.openqa.selenium.WebDriverException:连接被拒绝了   构建信息:版本:' 3.4.0',修订版:'未知',时间:'未知'
      系统信息:主机:' localhost.localdomain',ip:' 0:0:0:0:0:0:0:1',os.name:' Linux& #39;,os.arch:' amd64',os.version:' 3.10.0-327.36.3.el7.x8 6_64',java.version:' 1.8 .0_111'
      驱动程序信息:driver.version:FirefoxDriver
      remote stacktrace:stack backtrace:
                      0:0x4f388c - backtrace :: backtrace :: trace:

    等等。

    发生错误的行很简单:" methodDriver = new FirefoxDriver();"

    我最初接受了#34;连接拒绝"意味着防火墙以某种方式阻止了它,但是,当然,一切都在同一台服务器上,并且" firewalld"进程没有按原样运行。

    非常感谢任何帮助。

    编辑:建议的线程涉及一个明显相似的问题,但其中的建议与我在此处解决问题的方法不同。但是,我确实通过更新我的Firefox版本来解决这个问题。

2 个答案:

答案 0 :(得分:0)

请检查磁盘是否已满核心转储文件。它可以位于您的工作目录或用户目录中。 在我的环境中,我们只获得了前20个测试,因为我们的用户目录只有少于1G的可用空间。

答案 1 :(得分:0)

好吧,我似乎能够解决这个具体问题。

我只是将firefox更新为56.0.1。当我最初安装firefox时,看起来Centos没有默认为最新版本。

我记得读过#34的一些内容;每个版本的GeckoDriver都专门针对特定版本的Firefox进行了定制。"所以,每次你获得一个新的GeckoDriver时,你可能需要一个新的Firefox。

这为一个全新的问题打开了大门。我接受了这一行:

wait.until(ExpectedConditions.presenceOfAllElementsLocatedBy(By.className(" resultText&#34)));

对于带头的浏览器工作正常,我得到以下回复:

&#34; org.openqa.selenium.TimeoutException:预期的条件失败:等待By.className所在的任何元素的存在:resultText(尝试20秒,间隔为250 MILLISECONDS)&#34; < / p>

这与PhantomJS的问题类似。好像无头浏览器访问的网站完全不同于头文浏览器。