Webdriver 在 45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1
Posted
技术标签:
【中文标题】Webdriver 在 45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1【英文标题】:Webdriver Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms 【发布时间】:2012-09-17 06:33:46 【问题描述】:我有一个运行测试的盒子。詹金斯似乎会进入并执行正在运行的特定作业中描述的命令。
我在这里尝试运行我的 Selenium Webdriver 测试,但它告诉我在启动 firefox 时出错。最终的想法是完全在这个盒子上运行 webtests,并截取一些错误截图。
我正在使用 selenium-java-2.25.jar、firefox 10、linux 操作系统。
有趣的是,我可以手动 ssh 进入盒子,临时从盒子上的另一个用户那里复制魔法 cookie(以获得 X 隧道),执行export DISPLAY=mydisplay:1.0
,然后使用 ant 启动我的 selenium 测试。这将启动 Firefox 并且测试很好。
这里有各种线程似乎有完全相同的问题,我想我已经尝试了其中的大部分。这是我所做的:
重启盒子,用 VNC 重新登录。
在 Jenkins 中放置一个 bash 脚本以在运行 selenium 测试之前运行。 bash 脚本基本上只是执行export DISPLAY=mydisplay:1.0
。它还执行xclock
。这很有效,因为我可以看到 xclock 显示在 VNC 中。
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 不存在有关?我不确定从这里去哪里。仍然,当我指定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)
【问题讨论】:
我在 selenium 2.31.0 下重现了这个问题 我在使用 Selenium 2.47.1 时遇到了这个问题,我没有看到 firefox 驱动程序服务器在端口 XXXX 上启动的消息。相反,我得到一个打开的空白窗口并且无法控制浏览器,假设因为端口没有打开以侦听来自测试的有线协议命令。 Selenium server 2.47.1 和 Firefox 40 的组合似乎没问题,对我来说不适用于 Firefox 41。 如果您的盒子中没有 GUI,并且您正在使用 firefox 在盒子中运行测试,您会收到此错误。我建议您尝试在内存显示驱动程序中使用 Xvfb。或者这也可能是 firefox 版本和 selenium 版本兼容性的问题。 【参考方案1】:我认为这可能是显示问题。如果框中没有 GUI,则从 selenium webdriver 启动 firefox 会出现此错误。
要解决这个问题,首先在框中安装 Xvfb [yum install Xvfb -y
](一个虚拟显示驱动程序)。然后使用 xvfv-run -a -d <your test execution command>
从 jenkins 运行您的测试。这将在虚拟显示缓冲区中启动浏览器。它还能够使用 selenium webdriver 获取屏幕截图。
【讨论】:
【参考方案2】:我在使用 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>
【讨论】:
【参考方案3】:已安装 Firefox Setup 18.0.exe 它适用于我
【讨论】:
【参考方案4】:我今天也遇到了同样的问题。 为了解决这个问题,我将 Firefox 版本 51 降级为 47 并且它正在工作。
注意:我在虚拟盒子中使用 Linux Ubuntu Mate,主机是另一个 Ubuntu Mate。所有操作系统都是 64 位的,firefox 也是。
【讨论】:
【参考方案5】:我也被这个错误卡住了三天,终于弄明白了。你可以查看我给here的答案。这是浏览器和硒服务器的兼容性问题。希望对您有所帮助。您可以通过this link查看浏览器兼容性
【讨论】:
【参考方案6】:我在运行 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)
我已经听从了建议,问题已经解决了。
【讨论】:
【参考方案7】:在 Windows 上: 还要检查 Firefox 的“位数”。 Firefox 43.0.1 64bit 不适用于 Selenium 2.50.0。 与 Firefox 43.0.1 32bit 配合良好 ...
【讨论】:
【参考方案8】:在选择使用 Selenium 进行测试之前,您需要检查浏览器的兼容性:
https://github.com/SeleniumHQ/selenium/blob/master/java/CHANGELOG
这可能有助于回答上述问题。
【讨论】:
这是我遇到的问题。就我而言,它不是浏览器。它是底层操作系统。我正在使用 Mac OS X - Yosemite。而且似乎只有最新的 selenium 可以使用它。 链接坏了,先生【参考方案9】:解决方案-
1) 升级您的 Selenium 服务器,即 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 版本
参考 - Download updated selenium libs & jar i.e. Version 2.45.0
这将解决您的问题.. 干杯!!
【讨论】:
【参考方案10】:我有 Firefox 47 和 Selenium 2.53,但我遇到了同样的错误。 我的解决办法是把Firefox 47换成Firefox 46,问题就解决了。
【讨论】:
【参考方案11】:我也有同样的问题,但是在将 firefox 版本降级到 35.0.1 并且我的 selenium 版本是 2.43 后问题得到解决
【讨论】:
【参考方案12】:不知道你是否解决了这个问题,但我刚刚从另一边解决了同样的问题。
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 作业启动,就会发生这种情况。这或许可以解释为什么它为您运行而不为 Jenkins 运行。
【讨论】:
我在 Ubuntu 中使用 FF 19.0 和 selenium-server-standalone-2.29.0.jar。当我在 Jenkins 中运行我的 selenium 测试时,我得到了同样的错误:org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms。 Firefox 控制台输出:[testng] 错误:未指定显示 [testng] 错误:未指定显示 @RiponAlWasim 运气好能解决这个问题吗?我正在运行 2.31.0 并遇到同样的问题。 @Petr Peller:你的 FF 是什么版本的? 这似乎是一个持续存在的问题。我在使用 Selenium Webdriver 2.47 和 Firefox 44 时遇到了这个错误。将 Selenium Webdriver 更新到 2.53 修复了它。 tl;dr - 升级 Selenium(此处为 .jar 文件 - selenium-release.storage.googleapis.com/index.html)【参考方案13】:我遇到了同样的错误“selenium_Unable to connect to host 127.0.0.1 on port 7055” 解决方案:我在 Firefox 43.0.1 版本中使用了 selenium-java-2.48.2,现在它运行良好。
【讨论】:
【参考方案14】:添加到知识库。我们在 Bamboo 上遇到了同样的问题。问题已通过使用 Bamboo 上的环境属性得到解决。
DISPLAY=":1"
将值作为系统属性添加到 pom.xml 中,或者命令行不起作用。
【讨论】:
【参考方案15】:只需重新启动终端。 终端被吊死。 之后一切都会好起来的
【讨论】:
【参考方案16】:发生这种情况是因为旧版本。只需将浏览器更新到最新版本并将 selenium webdriver 包更新到最新版本。
【讨论】:
【参考方案17】:它发生在不同版本的ff上。我通过使用 selenium-server-standalone-2.41.0.jar 和 selenium-java-2.41.0.zip 使用最新的 ff 版本 39,显示相同的错误。
获取最新的服务器和客户端 jar 文件here 以了解我分别使用的服务器和客户端版本 2.47.0 和 2.47.1 的兼容性。和繁荣!它奏效了。
【讨论】:
【参考方案18】:我遇到了类似的问题。也许这个答案也会对你有所帮助。
您似乎遇到了两个不同的错误:
Unable to connect to host 127.0.0.1 on port 7055
Error: no display specified
Unable to connect
错误的原因是 Selenium Server 的版本不知道如何与较新版本的 Firefox 一起工作。您需要下载支持较新版本 Firefox 的较新版本的 Selenium Server。
Error: no display specified
错误的原因是 Firefox 正在启动,但远程主机上没有运行 X 服务器 (GUI)。您可以使用 X11 转发在远程主机上运行 Firefox,但在本地主机上显示它。在 Mac OS X 上,您需要下载 XQuartz 才能使用 X11 转发。
【讨论】:
【参考方案19】:如果我们的 selenium 脚本没有执行,请更新 selenium jars。 目前我正在使用 selenium-java-2.43.0-srcs
现在一切正常
【讨论】:
【参考方案20】:这是我使用 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();
【讨论】:
【参考方案21】:我也遇到了同样的问题。每当我们或 webdriver 打开时,FF 浏览器都会检查更新(如果有)。在这种情况下,我会在执行期间尝试更新,然后即使更新正确,您也会收到错误消息,因为您没有正确更新 Selenium 版本。
导航到“http://docs.seleniumhq.org/download/”并下载最新版本。现在去检查一下,问题确实解决了。 :)
【讨论】:
【参考方案22】:这个问题困扰了我很长时间,我看到一个可行的解决方案是在 Firefox 的情况下使用升级的 Firefox 驱动程序。
如果您的 firefox 升级是自动进行的,那么您可能偶尔会遇到此问题。看起来 Firefox 的人发展得太快了,或者他们不关心向后兼容性。
每次我在我的旧脚本上看到这个问题时,我都会检查 firefox 版本是否发生了变化——大多数时候是这样。
然后我去maven repo for selenium firefox driver repo - http://mvnrepository.com/artifact/org.seleniumhq.selenium/selenium-firefox-driver 并下载最新版本。
或立即使用新版本的 firefox 驱动程序更新我的 pom.xml(如果使用 maven) - 2.40.0
没有简单的方法可以避免此问题,除非您确实明确阻止来自 Firefox 的自动更新(您可以在首选项 - 高级 - 更新 - 选择“检查更新,但让我执行此操作(在 Mac 上)选择是否安装”)
如果您的脚本在自动模式下运行,那么您可能需要禁用更新。但是,这可能会产生其他问题。由于大多数人/用户可能默认启用了 Firefox 更新。因此,您的应用程序并未真正在任何更高版本上进行测试。
【讨论】:
【参考方案23】:只需在 Jenkins 中安装 Xvnc 插件即可。问题应该得到解决。
【讨论】:
【参考方案24】:为解决此问题,请使用http://docs.seleniumhq.org/download/ 上提供的新 jar 文件。对于 java、C#、php 等...Firefox 27.0.1 需要 2.39.0 的驱动程序版本。
【讨论】:
对我来说,它也适用于 Firefox 29.0 和 selenium 驱动程序 2.39.0(之前我在 lubuntu 14.0.4 遇到同样的问题)【参考方案25】:脚本的问题是用于脚本的环境与用于测试的环境不同,因此在此处设置环境变量对测试没有任何作用。
要正确设置变量,您需要在 Jenkins 中设置它。转到Manage Jenkins>Manage Nodes>Master>Configure。选中环境变量复选框,然后在名称框中输入DISPLAY,并将值设置为:1.0。
此外,您还需要设置权限,尝试在终端中使用 xhost +
禁用 xhost 访问控制。
【讨论】:
那个“xhost +”解决了我的问题,即使用 sudo 运行 webdriver 并没有打开浏览器——现在它可以工作了。【参考方案26】:我通过将 Firefox 降级到以前与 Selenium-WebDriver 配合良好的旧版本解决了这个问题。就我而言,我不得不降级回 Firefox 18,而这个版本与 Selenium 2.27 一起使用
这里是获取旧版本 Firefox 的链接:https://ftp.mozilla.org/pub/mozilla.org/firefox/releases/
【讨论】:
【参考方案27】:更新 selenium jar,下载 selenium 2.31.0
这个问题已经被硒人解决了
这是一个兼容性问题。
干杯
【讨论】:
【参考方案28】:为 FireFox 19 获取最新的 Selenium jar (2.30)
您可以在此处下载最新的 jars(截至写作时为 2.31):https://code.google.com/p/selenium/downloads/list
【讨论】:
新 URL 是 github.com/seleniumhq/selenium。如果你只想要 jars(例如 selenium-server-standalone-2.53.0.jar),你可以在这里得到它们:selenium-release.storage.googleapis.com/index.html【参考方案29】:我遇到了同样的错误;我使用了 selenium-java 版本 2.25.0 和 Firefox vresion 18.0.2; 我已将 selenium-java 的版本更改为 2.30.0,现在可以使用了。
【讨论】:
以上是关于Webdriver 在 45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1的主要内容,如果未能解决你的问题,请参考以下文章
org.openqa.selenium.firefox.NotConnectedException:45000 毫秒后无法连接到端口 7055 上的主机 127.0.0.1
firefox 26 和 webdriver 2.39.0 升级不起作用
Selenium 2.50 无法在 Firefox 45 上运行
我如何解决错误:MongoTimeoutError:服务器选择在30000毫秒后超时,无法连接到服务器127.0.0.1:27017