Selenium Webdriver - Debian Lenny 上的 FirefoxDriver 问题(错误无显示)

Posted

技术标签:

【中文标题】Selenium Webdriver - Debian Lenny 上的 FirefoxDriver 问题(错误无显示)【英文标题】:Selenium Webdriver - Issue with FirefoxDriver on Debian Lenny (Error No display) 【发布时间】:2013-04-08 11:20:07 【问题描述】:

我正在使用 Selenium 测试我的网站,它使用 Firefox 打开一个 URL,登录并在页面上执行一些操作,然后注销并关闭 Firefox。这一切都在 Windows 7 上运行良好。代码开头为:

WebDriver driver = new FirefoxDriver();
driver.get(URL);

现在我将我的 jar 部署在运行 Debian lenny 的 linux 盒子中,它上面有 iceweasel。 cron 作业启动程序,在尝试打开 firefox 时抛出以下错误:

org.openqa.selenium.firefox.NotConnectedException:无法连接 45000 毫秒后在端口 7055 上托管 127.0.0.1。火狐控制台输出: 错误:无法打开显示:0 错误:无法打开显示:0

在 org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:106) 在 org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:244) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:110) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:190) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:183) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:179) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:92) 在 auth.Authenticator.authenticate(Authenticator.java:15) 在 reader.ReaderThread.run(ReaderThread.java:67) org.openqa.selenium.WebDriverException:无法连接到二进制文件 FirefoxBinary(/usr/bin/firefox) 在端口 7055;过程输出如下: 错误:无法打开显示:0 错误:无法打开显示:0

构建信息:版本:“未知”,修订:“未知”,时间:“未知” 系统信息:os.name:'Linux',os.arch:'i386',os.version: '2.6.26-2-686', java.version: '1.6.0_26' 驱动程序信息: driver.version: Firefox 驱动程序位于 org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118) 在 org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:244) 在 org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:110) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:190) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:183) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:179) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:92) 在 auth.Authenticator.authenticate(Authenticator.java:15) 在 reader.ReaderThread.run(ReaderThread.java:67)

我的 Xvfb 在框中运行正常,我已将变量 DISPLAY 设置为 0。我四处搜索,但没有一个解决方案(如设置 env 变量)起作用。

XVfb 不应该作为浏览器启动并执行必要操作的非图形环境工作吗?是什么阻止它启动?

我正在使用最新的 Selenium 版本 2.31 和 Firefox 3.0.6 Iceweasel。

编辑:已更新至 Firefox 14,但仍出现相同问题。我什至将超时限制提高到 60 秒。

driver.manage().timeouts().pageLoadTimeout(60, TimeUnit.SECONDS);

已解决:通过使用 xvfb 包装器运行它,xvfb-run 如下所示:

export DISPLAY=:0.0
xvfb-run --auto-servernum --server-num=0 nohup java - jar X.jar

【问题讨论】:

你能直接启动firefox(或其他X应用程序)吗? 什么版本的 Selenium 和 Firefox? 您是否考虑过使用集线器/节点设置?我个人发现这样更容易使用。 我正在使用最新的 Selenium 版本 2.31 和 Firefox 3.0.6 Iceweasel。今天我将尝试在我的主目录上安装更新版本的 FF,看看会发生什么。 【参考方案1】:

这样做解决了:

export DISPLAY=:0.0 xvfb-run --auto-servernum --server-num=0 nohup java - jar X.jar

【讨论】:

【参考方案2】:

我已经看到了类似的问题,这仅适用于 firefox,对于其他浏览器一切正常,我在 Chrome 上尝试过。 这是解决方案 1.检查FF的版本,如果是最新的,就换FF的小版本。建议更稳定。 2. 你应该总是尝试从 selenium 网站获取最新的 selenium 二进制文件。 有关更多详细信息,请尝试以下解决方案: http://khyatisehgal.wordpress.com/2014/09/09/at-org-openqa-selenium-firefox-internal-newprofileextensionconnection-startnewprofileextensionconnection-java106/

【讨论】:

此解决方案无法解决DISPLAY 的问题,即问题中提出的问题。【参考方案3】:

尝试更新您的网络驱动程序或降级您的 Firefox。 这个问题与 selenium 服务器无法连接到您的 Firefox 有关。

【讨论】:

嗨伙计,更新我的网络驱动程序是什么意思?我正在为 WebDriver API 使用 Selenium 的最新版本,所以我认为这是我应该使用的版本。你推荐什么版本的火狐?我知道支持的任何东西都应该做,但是如果有一个经过反复测试可以正常工作,那将是理想的。 @WiQu:是的,我可以使用 xvfb-run firefox 启动 firefox 好吧,我使用 FF 版本 14 或 18。请记住,Windows 和 Linux 中的 FF 可能有不同的问题,为了安全起见,1 或 2 版本低于已发布的 FF 版本。我的 2 美分。 更新没用,我用的是 Firefox 14 还是一样的错误。 嗯,如果您尝试在不使用 xvfb 的情况下连接它,它会起作用吗?【参考方案4】:

升级到最新的 Selenium jar 后,此问题得到解决。

【讨论】:

此解决方案无法解决DISPLAY 的问题,即问题中提出的问题。

以上是关于Selenium Webdriver - Debian Lenny 上的 FirefoxDriver 问题(错误无显示)的主要内容,如果未能解决你的问题,请参考以下文章

Selenium Webdriver概述

appium的webdriver和selenium有啥区别?

selenium之python源码解读-webdriver继承关系

From  selenium  import  webdriver

Selenium WebDriver(Python)API

selenium+python - webdriver​模拟键盘ENTER没有效果