在45000 ms 之后无法连接到端口7055上的主机127.0.0.1

我有一个箱子,我在那里运行测试。似乎 Jenkins 会 ssh 并执行正在运行的特定作业中描述的命令。

在这里,我试图运行我的 Selenium WebDriver 测试,但它告诉我,我在启动 Firefox 时出现了错误。最终的想法是在这个机器上完全运行 webtest,并截取一些错误的屏幕快照。

我使用的是 selenium-java-2.25. jar、 firefox 10、 linux OS。

有趣的是,我可以手动 ssh 进入框中,临时从框中的另一个用户复制神奇 cookie (以获得一个 X 通道) ,执行 export DISPLAY=mydisplay:1.0,然后使用 ant 启动我的硒测试。这会调出 firefox 和测试。

这里有各种各样的线程似乎有完全相同的问题,我想我已经尝试了其中的大部分。这就是我所做的:

  • 重新启动盒子,用 VNC 重新登录。

  • 在运行硒测试之前,将 bash 脚本放在 Jenkins 中运行。Bash 脚本基本上只执行 export DISPLAY=mydisplay:1.0。它还执行 xclock。我可以在 VNC 中看到显示的 xlock。

  • Iptables 已关闭

  • Firefox 正确地位于/usr/bin/firefox 中

  • Sshd _ config 显示 X11Forforward 为 true。

  • 据说降级火狐帮助了一些人,但我不希望这样做。网络驱动程序应该支持 FF 10无论如何。

然而,以上这些都不能解决问题。

本地主机上的7055端口似乎并不存在:

没有指纹

我的/etc/hosts 是这么说的:

  1 127.0.0.1               localhost.localdomain localhost
2 ::1             localhost6.localdomain6 localhost6

也许它与 localhost: 7055不存在有关?我不知道接下来该怎么办。但是,为什么当我指定 mydisplay:1.0时,错误输出说它在寻找 display: :0.0

最后是我收到的错误输出:

[testng] org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Error: cannot open display: :0.0
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Xlib: connection to ":0.0" refused by server
[testng] Xlib: No protocol specified
[testng]
[testng] Error: cannot open display: :0.0
[testng]
[testng]    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:109)
[testng]    at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:245)
[testng]    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:109)
[testng]    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:185)
[testng]    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:178)
[testng]    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:174)
[testng]    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:92)
[testng]    at com.test.webtest.browser.BrowserFactory.createBrowser(BrowserFactory.java:24)
[testng]    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[testng]    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:57)
[testng]    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[testng]    at java.lang.reflect.Method.invoke(Method.java:601)
326371 次浏览

不知道你是否解决了这个问题,但我刚刚从另一边解决了同样的问题。

Selenium 和 Firefox 似乎很难相互交流——我怀疑 Firefox 在很多版本中都发生了“演变”,所以向后和向前兼容性并不总是能得到保证,而且不兼容性似乎总是会产生同样的错误。

当我从 FF 15调到 FF 16的时候,我的问题就开始了。运行在 Ubuntu 上,这会自动神奇地与其他升级一起发生,但我相信这是关键的变化。

通过从 Selenium 2.24.1迁移到 Selenium 2.25.0,问题得到了解决

由于硒的更改只是下载 jar 文件并运行它,而不是旧的,因此值得尝试作为一个快速和简单的故障诊断器-如果它没有帮助,只需切换回来。在您的例子中,我不确定要尝试哪个版本的 Selenium,但是我认为2.24应该可以与 FF 10一起工作。

我过去发现的另一个问题是 Firefox 不能作为 root 用户在 Ubuntu 上运行。如果 Selenium 作为服务运行,或者可能从 bash 脚本或 cron 作业启动,就会发生这种情况。这也许可以解释为什么它适用于你,而不适用于詹金斯。

为 FireFox 19获取最新的 Selenium jar (2.30)

您可以在这里下载最新的 jar (编写本文时为2.31) : https://code.google.com/p/selenium/downloads/list

我得到了同样的错误; 我使用了 selenium-java 版本2.25.0和 Firefox 版本18.0.2; 我已经将 selenium-java 的版本更改为2.30.0,现在可以工作了。

为了解决这个问题,我将 Firefox 降级到了之前与 Selenium-WebDriver 一起工作得很好的旧版本。在我的例子中,我不得不降级到 Firefox 18,这个版本可以使用 Selenium 2.27

下面是获取旧版本 Firefox 的链接: https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/

更新硒罐,下载硒2.31.0

这个问题已经被硒公司的人解决了

这是兼容性问题。

干杯

在选择使用 Selenium 进行测试之前,您需要检查浏览器的兼容性:

Https://github.com/seleniumhq/selenium/blob/master/java/changelog

这可能有助于回答上述问题。

脚本的问题在于用于脚本的环境与用于测试的环境不同,因此在那里设置环境变量对测试没有任何作用。

要正确设置变量,您需要在 Jenkins 中设置它。转到 管理 Jenkins > 管理节点 > 主 > 配置。选中 环境变量复选框,然后在名称框中输入 DISPLAY,并将值设置为: 1.0。

此外,您还需要设置权限,尝试在终端中使用 xhost +禁用 xhost 访问控制。

这是因为旧的版本。只需将浏览器更新为最新版本,并将 selenium webDriver 包更新为最新版本即可。

为了解决这个问题,使用 http://docs.seleniumhq.org/download/上可用的新 jar 文件。对于 java,C # ,php 等等。.Firefox27.0.1需要2.39.0的驱动程序版本。

只要在 Jenkins 中安装 Xvnc 插件就可以了。

这个问题困扰了我很长时间,我已经看到一个工作解决方案的情况下,火狐是 使用升级的 Firefox 驱动程序

  • 如果你的 Firefox 的升级是自动进行的比你可能会面临这个问题一段时间。看起来火狐用户开发得太快了,或者他们根本不在乎向下兼容。

  • 每次在我的旧脚本中看到这个问题时,我都会检查 Firefox 版本是否已经更改——大多数情况下都是如此。

  • 然后,我转到 selenium firefox 驱动程序 repo-http://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver的 maven repo,并下载最新版本。

  • 或者使用新版本的 firefox 驱动程序来更新 pom.xml (如果使用 maven 的话) ,现在是 -2.40.0

  • 没有简单的方法可以避免这个问题,除非你真的明确地阻止来自 Firefox 的自动更新(你可以这样做(在 Mac 上)在首选项-Advanced-Update-选择“检查更新,但让我选择是否安装它们”)

  • 如果您的脚本在自动模式下运行,那么您可能需要禁用更新。然而,这可能会产生其他问题。因为大多数人/用户可能默认启用了 Firefox 更新。因此,您的应用程序实际上并没有在任何更新的版本上进行测试。

我也面临着同样的问题。每当我们或网络驱动打开 FF 浏览器将检查更新,如果有。在这种情况下,它将尝试在执行期间更新,然后您将得到错误,即使它被正确地更新,只是因为您没有正确地更新 Selenium 版本。

导航到“ http://docs.seleniumhq.org/download/" ,下载最新版本,现在去检查一下,问题确实解决了。 :)

这就是当我使用 IWebDriver 的 static 属性并从多个测试方法调用它时的行为。

public class LanguageMenu
{
private static IWebDriver drv;


static LanguageMenu()
{
drv = Driver.Instance;
}
...


public static void English()
{
drv.FindElement(By.Id("mvc_lang_en"));
el.Click();
}


public static void Rusian()
{
...
}


...
}

喜欢

 [TestMethod]
public void Language_SwitchTo_English()
{
LanguageMenu.English();
Assert.IsTrue(ContactPage.IsAt("Contact"));
}


[TestMethod]
public void Language_SwitchTo_Rusian()
{
LanguageMenu.English();
Assert.IsTrue(ContactPage.IsAt("Контакт"));
}

解决方案

对于每个调用测试方法,创建 Driver 的新实例

 private static void English()
{
var drv = Driver.Instance;
var el = drv.FindElement(By.Id("mvc_lang_en"));
el.Click();
}

如果我们的硒脚本没有执行,更新硒罐。 目前我正在使用 selenium-java-2.43.0-srcs

现在一切正常

我也遇到过类似的问题,也许这个答案对你也有帮助。

看起来你有两个不同的错误:

  1. Unable to connect to host 127.0.0.1 on port 7055
  2. Error: no display specified

出现 Unable to connect错误的原因是 Selenium Server 版本不知道如何使用较新版本的 Firefox。您需要下载支持新版 Firefox 的更新版本的 Selenium Server。

出现 Error: no display specified错误的原因是正在启动 Firefox,但是远程主机上没有运行 X 服务器(GUI)。您可以使用 X11转发在远程主机上运行 Firefox,但是在本地主机上显示它。在 MacOSX 上,您需要下载 XQuartz才能使用 X11转发。

它发生在 ff 的不同版本上。我通过使用 selenium-server-stanalone-2.41.0.jar 和 selenium-java-2.41.0.zip 来使用最新的 ff 版本39,这两个版本显示了相同的错误。

获取最新的服务器和客户端 jar 文件 给你,以了解我分别使用的服务器和客户端版本2.47.0和2.47.1的兼容性。砰!成功了。

重启终端。 终端是挂没有别的。 之后一切都会好起来的

解决方案-

1)升级您的 Selenium Server,即 Selenium jar“ Selenium-Server-stanalone-2.xx.x.JAR”到 “ selenium-server-stanalone-2.45.0.JAR”

2)升级你的 Selenium Client Driver,即 Selenium libs 文件夹“ Selenium-java-2.xx.x”到 “ selenium-java-2.45.0”

3)检查及安装兼容的 Firefox 版本

参考 -下载更新的 selenium libs & jar,即版本2.45.0

这将解决你的问题. . 干杯! !

增加知识库。关于竹子我们也有同样的问题。利用竹材的环境特性解决了这一问题。

DISPLAY=":1"

在 pom.xml 中将值作为系统属性添加,或者命令行不起作用。

我得到了同样的错误“ selenium _ Unable to connect to host 127.0.0.1 on port 7055” 解决方案: 我在 Firefox 版本43.0.1中使用了 selenium-java-2.48.2,现在它工作得很好。

我也遇到了同样的问题,但是在将 firefoxversion 降级到35.0.1并且我的 selenium 版本是2.43之后问题就解决了

我有 火狐47硒2.53,我得到了同样的错误。 我的解决方案是把 Firefox 47改成 火狐46,问题就解决了。

在 Windows 上: 同时检查你的 Firefox 的“比特”,Firefox 43.0.164位不能与 Selenium 2.50.0一起工作。 与 Firefox 43.0.132位协同工作..。

我在运行 docker 时遇到了完全相同的问题,但是我在您提到的错误之前的日志中找到了解决方案。

selenium_1  | 2016-11-11 11:19:34,498 DEBG 'xvfb' stderr output:
selenium_1  | (EE)
selenium_1  | Fatal server error:
selenium_1  | (EE) Server is already active for display 99
selenium_1  |   If this server is no longer running, remove /tmp/.X99-lock
selenium_1  |   and start again.
selenium_1  | (EE)

我听从了建议,问题已经解决了。

我也被这个错误困住了三天,最后终于弄明白了。你可以查看我给 给你的答案。这是浏览器和硒服务器兼容性问题。希望这个能帮上忙。您可以从 这个链接检查浏览器兼容性

我今天也遇到了同样的问题。 为了解决这个问题,我将 Firefox 版本51降级到了47,并且它正在工作。

注意: 我使用的是一个 Linux Ubuntu Mate,在虚拟机中,主机是另一个 Ubuntu Mate。所有的操作系统都是64位的,火狐也是。

安装了 Firefox 安装程序18.0.exe,它对我很有用

我对火狐38也有同样的问题。

在使用以下版本依赖项之后,我可以解决这个问题。

    <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>2.53.0</version>
</dependency>


<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>2.53.0</version>
</dependency>

我觉得这可能是展示的问题。如果框中没有 GUI,那么从 selenium 网络驱动程序启动 Firefox 将会出现这个错误。

要解决这个问题,首先在框中安装 Xvfb [ yum install Xvfb -y](一个虚拟显示驱动程序)。然后用 xvfv-run -a -d <your test execution command>从 Jenkins 运行测试。这将在虚拟显示缓冲区中启动浏览器。此外,它是能够获得使用硒网络驱动程序的截图。