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

时间:2012-09-25 17:27:54

标签: firefox selenium jenkins x11 selenium-webdriver

我有运行测试的盒子。看起来Jenkins会ssh并执行正在运行的特定作业中描述的命令。

这里我试图运行我的Selenium Webdriver测试,但它告诉我在启动firefox时遇到错误。最终的想法是完全在这个盒子上运行网络测试,并拍摄一些错误的截图。

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

有趣的是,我可以手动ssh到框中,暂时从框中的另一个用户复制魔术cookie(以获得X隧道),执行export DISPLAY=mydisplay:1.0,然后使用启动我的硒测试蚂蚁。这将带来firefox和测试就好了。

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

  • 重新启动此框,使用VNC重新登录。

  • 在运行selenium测试之前,在Jenkins中放置一个bash脚本来运行。 bash脚本基本上只执行export DISPLAY=mydisplay:1.0。它还执行xclock。这可以工作,因为我可以看到在VNC中显示xclock。

  • iptables已关闭

  • firefox正确位于/ usr / bin / firefox

  • sshd_config显示X11Forwarding为true。

  • 据说降级firefox帮助了一些人,但我不想这样做。无论如何,Webdriver应该支持FF 10.

然而,以上都没有解决问题。

看起来本地主机上的端口7055似乎不存在:

netstat -an | grep 7055 - 没有打印

这是我/ etc / hosts所说的:

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

也许它与localhost有关:7055不存在?我不确定从哪里开始。仍然,为什么当我指定display: :0.0时,错误输出会说它正在寻找mydisplay:1.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)

28 个答案:

答案 0 :(得分:91)

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

看起来Selenium和Firefox很难相互交谈 - 我怀疑Firefox'发展'在多个版本上的变化,因此并不总能保证向后和向前的兼容性,并且不兼容性似乎总会产生相同的错误。

当我从FF 15移动到FF 16时,我的问题就开始了。在Ubuntu上运行时,这种情况会随着其他升级自动发生,但我相信这是一个关键变化。

从Selenium 2.24.1迁移到Selenium 2.25.0

解决了这个问题

由于selenium更改只是下载jar文件并运行它而不是旧文件,因此值得尝试将其作为快速简便的故障排除程序 - 如果它没有帮助,只需切换回来。在你的情况下,我不确定试用哪个版本的Selenium,但我认为2.24应该适用于FF 10.

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

答案 1 :(得分:14)

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

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

  1. Unable to connect to host 127.0.0.1 on port 7055
  2. Error: no display specified
  3. Unable to connect错误的原因是Selenium Server的版本不知道如何使用较新版本的Firefox。您需要下载支持较新版Firefox的Selenium Server的较新版本。

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

答案 2 :(得分:13)

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

https://github.com/SeleniumHQ/selenium/blob/master/java/CHANGELOG

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

答案 3 :(得分:8)

获取FireFox 19的最新Selenium罐子(2.30)

您可以在此处下载最新的罐子(写作时为2.31):https://code.google.com/p/selenium/downloads/list

答案 4 :(得分:6)

我通过将我的Firefox降级到以前与Selenium-WebDriver配合得很好的旧版本来解决了这个问题。在我的情况下,我不得不降级到Firefox 18,这个版本适用于Selenium 2.27

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

答案 5 :(得分:5)

我有 Firefox 47 Selenium 2.53 ,我也遇到了同样的错误。 我的解决方案是将Firefox 47更改为 Firefox 46 ,问题解决了。

答案 6 :(得分:5)

这个问题困扰了我很长一段时间,我已经看到一个有效的解决方案,如果Firefox要使用升级的firefox驱动程序

  • 如果 firefox升级自动发生,则可能会偶尔遇到此问题。看起来Firefox的开发速度太快,或者他们不关心向后兼容性。

  • 每当我在旧脚本上看到这个问题时,我会检查firefox版本是否已经发生变化 - 大部分时间都是如此。

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

  • 或者使用新版本的firefox驱动程序更新我的pom.xml(如果使用了maven) - 2.40.0

  • 除非您真正明确阻止来自firefox的自动更新,否则没有简单的方法可以避免此问题(您可以在首选项中执行此操作(在Mac上) - 高级 - 更新 - 选择&#34;检查更新,但是让我选择是否安装它们&#34;)

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

答案 7 :(得分:4)

更新selenium jar,下载selenium 2.31.0

这个问题已经由硒人解决了

这是兼容性问题。

干杯

答案 8 :(得分:3)

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

要正确设置您需要在Jenkins中设置它的变量。转到管理Jenkins&gt;管理节点&gt;主控&gt;配置。选中 Environment variables 复选框,然后在名称框中输入DISPLAY,并将值设置为:1.0。

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

答案 9 :(得分:2)

我也遇到了同样的问题。每当我们或webdriver打开时,FF浏览器都会检查更新(如果有的话)。在这种情况下,我将尝试在执行期间更新,然后即使因为您没有正确更新Selenium版本而正确更新,您也会收到错误。

导航至“http://docs.seleniumhq.org/download/”并下载最新版本。现在去检查,确实会解决问题。 :)

答案 10 :(得分:1)

我也有同样的问题,但是在将firefox版本降级到35.0.1并且我的selenium版本是2.43

之后问题得到了解决

答案 11 :(得分:1)

我收到了同样的错误“selenium_Unable连接到端口7055上的主机127.0.0.1” 解决方案:我使用了selenium-java-2.48.2和Firefox版本43.0.1,现在它运行良好。

答案 12 :(得分:1)

我遇到了与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)

我已经按照建议和问题进行了整理。

答案 13 :(得分:1)

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

答案 14 :(得分:1)

只需在Jenkins中安装Xvnc插件即可。问题应该解决。

答案 15 :(得分:1)

要解决此问题,请使用http://docs.seleniumhq.org/download/上提供的新jar文件。分别对应java,C#,php等... Firefox 27.0.1需要2.39.0的驱动版本。

答案 16 :(得分:0)

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

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

答案 17 :(得分:0)

我也被这个错误困住了三天,最后想出来了。你可以查看我给出的答案here。这是浏览器和selenium服务器兼容性问题。我希望这会有所帮助。您可以检查this link

的浏览器兼容性

答案 18 :(得分:0)

安装Firefox Setup 18.0.exe它适用于我

答案 19 :(得分:0)

在Windows上: 检查&#34; bitness&#34;你的Firefox。 Firefox 43.0.1 64位无法与Selenium 2.50.0一起使用。 适用于Firefox 43.0.1 32bit ...

答案 20 :(得分:0)

我遇到了与firefox 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> 

答案 21 :(得分:0)

添加到知识库。我们在Bamboo上遇到了同样的问题。使用Bamboo上的环境属性解决了这个问题。

DISPLAY=":1"

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

答案 22 :(得分:0)

只需重启终端即可。 终端没有其他任何东西被绞死。 那之后一切都会好起来的

答案 23 :(得分:0)

它发生在不同版本的ff上。我使用selenium-server-standalone-2.41.0.jar和selenium-java-2.41.0.zip使用最新的ff版本39,它显示相同的错误。

获取最新的服务器和客户端jar文件here以获得兼容性,我分别使用服务器和客户端版本2.47.0和2.47.1。和繁荣!它奏效了。

答案 24 :(得分:0)

如果我们的selenium脚本没有执行,请更新selenium jar。 目前我使用的是selenium-java-2.43.0-srcs

现在工作正常

答案 25 :(得分:0)

当我使用IWebDriver的静态属性并从多个测试方法中调用它时,这就是它的表现。

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();
 }

答案 26 :(得分:0)

这是因为旧版本。只需将浏览器更新到最新版本,并将selenium webdriver包更新到最新版本。

答案 27 :(得分:-1)

解决方案 -

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

2)升级您的Selenium客户端驱动程序,即selenium libs文件夹“selenium-java-2.xx.x”到“selenium-java-2.45.0”

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

参考 - Junio C Hamano (gitster)

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