Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 通过SSH运行带有Selenium的Firefox时出现的问题_Java_Selenium_Firefox_Ssh - Fatal编程技术网

Java 通过SSH运行带有Selenium的Firefox时出现的问题

Java 通过SSH运行带有Selenium的Firefox时出现的问题,java,selenium,firefox,ssh,Java,Selenium,Firefox,Ssh,我已经编写了一个Java程序,它使用Selenium通过Firefox激活和形成连接,目前正在尝试通过SSH在单独的服务器上运行该程序。然而,尽管该程序在我的机器上运行良好,但当我通过SSH运行它时,会出现一个错误。这是我得到的具体信息: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox consol

我已经编写了一个Java程序,它使用Selenium通过Firefox激活和形成连接,目前正在尝试通过SSH在单独的服务器上运行该程序。然而,尽管该程序在我的机器上运行良好,但当我通过SSH运行它时,会出现一个错误。这是我得到的具体信息:

org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: no display specified
Error: no display specified

at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at GoogleTestNineIndigoVersion.main(GoogleTestNineIndigoVersion.java:278)
Exception in thread "main" org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows: 
Error: no display specified
Error: no display specified

Build info: version: '2.42.0', revision: '5e82430', time: '2014-05-22 20:18:33'
System info: host: 'video', ip: '130.63.94.246', os.name: 'Linux', os.arch: 'amd64', os.version: '2.6.32-573.3.1.el6.cse.x86_64', java.version: '1.8.0_91'
Driver info: driver.version: FirefoxDriver
at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:130)
at org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:115)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:193)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182)
at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:95)
at GoogleTestNineIndigoVersion.main(GoogleTestNineIndigoVersion.java:278)
Caused by: org.openqa.selenium.firefox.NotConnectedException: Unable to connect to host 127.0.0.1 on port 7055 after 45000 ms. Firefox console output:
Error: no display specified
Error: no display specified

at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
... 7 more
org.openqa.selenium.firefox.NotConnectedException:45000毫秒后无法连接到端口7055上的主机127.0.0.1。firefox控制台输出:
错误:未指定显示
错误:未指定显示
位于org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
位于org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:115)
位于org.openqa.selenium.firefox.FirefoxDriver(FirefoxDriver.java:193)
位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:186)
位于org.openqa.selenium.firefox.FirefoxDriver(FirefoxDriver.java:182)
位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:95)
在GoogleTestNineIndigoVersion.main(GoogleTestNineIndigoVersion.java:278)
线程“main”org.openqa.selenium.WebDriverException中出现异常:无法连接到端口7055上的二进制FirefoxBinary(/usr/bin/firefox);过程输出如下:
错误:未指定显示
错误:未指定显示
构建信息:版本:“2.42.0”,修订版:“5e82430”,时间:“2014-05-22 20:18:33”
系统信息:主机:'video',ip:'130.63.94.246',os.name:'Linux',os.arch:'amd64',os.version:'2.6.32-573.3.1.el6.cse.x86_64',java.version:'1.8.0_91'
驱动程序信息:Driver.version:FirefoxDriver
位于org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:130)
位于org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:246)
位于org.openqa.selenium.remote.RemoteWebDriver。(RemoteWebDriver.java:115)
位于org.openqa.selenium.firefox.FirefoxDriver(FirefoxDriver.java:193)
位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:186)
位于org.openqa.selenium.firefox.FirefoxDriver(FirefoxDriver.java:182)
位于org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:95)
在GoogleTestNineIndigoVersion.main(GoogleTestNineIndigoVersion.java:278)
原因:org.openqa.selenium.firefox.NotConnectedException:45000毫秒后无法连接到端口7055上的主机127.0.0.1。firefox控制台输出:
错误:未指定显示
错误:未指定显示
位于org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
... 还有7个
从我所做的研究中,我发现出现这个问题是因为,一般来说,任何给定版本的Selenium都只能与当时最新版本的Firefox兼容。大多数其他遇到类似问题的人都被告知升级Selenium。然而,我有理由肯定我有最新版本的Selenium(2.53.0),我认为逻辑解决方案是在我试图运行程序的服务器上升级Firefox版本。不幸的是,我试图运行该程序的服务器是我所在大学的服务器(我创建该程序是作为我暑期工作的一部分,为我的一位教授工作,他们希望我在大学的服务器上运行该程序),而且我显然没有必要的权限升级我所在大学的Firefox版本

我能想到的唯一其他解决方案是使用旧版本的Selenium,但事实证明这是徒劳的。Selenium 2.42.0和Selenium 2.51.0在SSH上运行时都会遇到相同的问题——后者尤其让我怀疑版本兼容性是否真的是个问题,考虑到我所看到的,Selenium 2.51.0应该与大学服务器上的Firefox版本一起工作。然而,我已经研究了人们在SSH上使用Selenium时遇到的其他问题,我唯一看到的例外是版本兼容性问题


有人知道我能做些什么来解决这个问题吗?我笔记本电脑上的Firefox版本(可与Selenium 2.53.0和2.51.0一起使用,但在2.42.0中遇到与我大学服务器上的版本相同的问题)是46.0.1版,而我大学服务器上的版本(我尝试过的任何Selenium版本都不能使用)是Firefox-38.6.1-1.el6.centos.x8664(如果相关,请提供更多详细信息)。

在我当前的项目中遇到类似的问题,可能的解决方案将在以下链接中找到


在我当前的项目中遇到类似的问题,可能的解决方案将在下面的链接中找到


测试是如何开始的?你是如何在大学的centos服务器上设置显示器的?
错误:没有指定显示器
听起来显示器设置有问题。你需要xvfb,谷歌“运行selenium headless linux”对于任何风格的linuxI都有很多说明,我没有运行测试,而是使用Selenium打开Firefox并与各种网页建立连接(如果需要,我可以更详细地介绍)。恐怕我不完全确定如何回答第二个问题--我只是将类文件传输到大学服务器,然后从命令行运行程序,而不是像在笔记本电脑上运行程序那样通过Eclipse运行程序。Re:xvfb,我发现这是一个类似问题的建议其他人也有,但他们得到了与我完全不同的例外情况,这让我不确定这是否是问题所在(我大多认为我在解决当前问题后遇到了这个问题:P)。不过现在我想起来了,我可以直接从大学的一台机器上访问我的程序(虽然我不能在他们想要的特定服务器上运行),所以我应该能够检查pr
public  static int browserRetryCount =
                    Integer.parseInt(System.getProperty("webdriver.instance.retry.count","5"));

static int browserAttempt = 1;

public WebDriver getConnection(String browserType) {

     try {

              browserDriver = new FirefoxDriver(capabilities);


     } catch (Exception e) {
                Logger.logMessage("Error while initializing Driver object: "+e.getMessage());
                        String bindErrorMessage = "Unable to bind to locking port";
                        if ((e.getMessage().contains(bindErrorMessage)) && (browserAttempt<=browserRetryCount))
{
                            Logger.logMessage("Attemp2: browser instance creation!");
                            browserAttempt++;
                            int newPort = 7060+new java.util.Random().nextInt(10);
                            Logger.logMessage("newPort="+newPort);
                            System.setProperty("webdriver.firefox.port", newPort+"");
                            getConnection(browserType);                           
                        } else {
                            throw new UIFailure("Not able to create a driver object",e);
                        }
            }
}
FirefoxProfile ffProfile = new FirefoxProfile();
FirefoxBinary ffBinary = new FirefoxBinary();
ffBinary.setTimeout(TimeUnit.SECONDS.toMillis(180));
driver = new FirefoxDriver(ffBinary, ffProfile);