我有运行测试的盒子。看起来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)
答案 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)
我有类似的问题。也许这个答案对你也有帮助。
看起来你有两个不同的错误:
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转发。
答案 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)
答案 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版本
这将解决你的问题..干杯!!