Selenium WebDriver Firefox错误 - 无法连接

时间:2013-09-24 14:50:45

标签: java selenium tomcat7 selenium-webdriver

我完成了我的研究并发现了其他相关问题。没有人帮忙。

到目前为止:

  • 拥有最新版本的selenium

  • 安装旧版本的firefox

我在Windows 7上进行了eclipse,我创建了一个.war并在ehost下在localhost:8080 / JSPprojectServlets(在W7上)进行了测试,它运行正常。 selenium打开firefox,获取url,然后获取源代码。

然后我将.war文件放到tomcat7 / webapps下的linux(ubuntu)机器上,并尝试使用我的Windows 7机器在192.168.1.102:8080/JSPprojectServlets下访问它,但它不起作用,它会出现以下错误:

HTTP Status 500 - Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows:

type Exception report

message Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows:

description The server encountered an internal error that prevented it from fulfilling this request.

exception

org.openqa.selenium.WebDriverException: Failed to connect to binary FirefoxBinary(/usr/bin/firefox) on port 7055; process output follows: 

(process:32704): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
Error: no display specified

(process:32711): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
Error: no display specified

Build info: version: '2.32.0', revision: '6c40c18', time: '2013-04-09 17:23:22'
System info: os.name: 'Linux', os.arch: 'amd64', os.version: '3.8.0-29-generic', java.version: '1.7.0_25'
Driver info: driver.version: FirefoxDriver
    org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)
    org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:244)
    org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:190)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:183)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:179)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:92)
    org.blah.blah.XmlServlet.doGet(XmlServlet.java:25)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
root cause

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

(process:32704): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
Error: no display specified

(process:32711): GLib-CRITICAL **: g_slice_set_config: assertion `sys_page_size == 0' failed
Error: no display specified

    org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:106)
    org.openqa.selenium.firefox.FirefoxDriver.startClient(FirefoxDriver.java:244)
    org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:110)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:190)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:183)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:179)
    org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:92)
    org.blah.blah.XmlServlet.doGet(XmlServlet.java:25)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:621)
    javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
note The full stack trace of the root cause is available in the Apache Tomcat/7.0.35 logs.

我的代码看起来像这样

package org.blah.blah;

import java.io.IOException;
import java.io.PrintWriter;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;


import org.openqa.selenium.WebDriver;

import org.openqa.selenium.firefox.FirefoxDriver;
//import org.openqa.selenium.chrome.ChromeDriver;


public class XmlServlet extends HttpServlet {

    protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
        //System.out.println("Hello from GET method.");
        PrintWriter writer = response.getWriter();
        writer.println("<h3></h3>");

        WebDriver driver = new FirefoxDriver();

        driver.get("http://google.com");

        writer.println(driver.getPageSource());

    }
}

更新

当我使用HtmlUnitDriver时,它的工作原理为192.168.1.102:8080/JSPprojectServlets

显然,由于某种原因它无法打开Firefox。我在W7 64位,并且没有版本FF10,但仍然没有。

7 个答案:

答案 0 :(得分:7)

尝试将Firefox二进制绝对路径作为代码中的参数,并在从win7调用时将其作为JSP的输入提供,然后它可以解决问题。从上面的堆栈跟踪中可以看出firefox二进制文件在/ usr / bin / firefox中找不到,但是你试图在win7中调用路径不同的webdriver。

Receiving org.openqa.selenium.WebDriverException: Cannot find firefox binary in PATH running tests in Selenium IDE with Webdriver playback

答案 1 :(得分:1)

当java客户端无法连接到本地主机上的Selenium实例时,会发生这种情况。 如果您在Windows上运行,请确保在hosts文件中注释“127.0.0.1 localhost”lin。 主机文件将在C:\ Windows \ System32 \ drivers \ etc文件夹中提供。

我遇到了同样的问题。 如果我们在代理服务器后面,这主要发生。

答案 2 :(得分:1)

我遇到了同样的问题。在任何地方我都被发现作为版本问题的根本原因而且确实如此。 这是在迁移到最新版本的Selenium Web Driver之后进行排序的,即从2.32到2.39(因为所有其他组件,如Java / Web浏览器等已经是最新的)。现在所有脚本都运行良好。

答案 3 :(得分:1)

我也有同样的问题但不知何故解决了这个问题

  1. 更新我的JAR文件: selenium-java-2.43.0.jar selenium-java-2.48.2.jar selenium-server-standalone-2.43.1.jar selenium-server-standalone-2.48.2.jar
  2. 向lib
  3. 添加了一个新的JAR文件 selenium-java-2.48.2-srcs.jar

    这些更改使我的代码在我的案例中完美无缺

答案 4 :(得分:0)

我在ChromeDriver上遇到过这样的问题,我无法运行测试,因为我的chromedriver不支持我在计算机上安装的谷歌浏览器版本。

不是安装旧版本的firefox,而是使用更新的FirefoxDriver,而是通过更新 来确保两者都是copacetic

答案 5 :(得分:0)

在Windows 7和apache-tomcat-6.0.37上使用Selenium部署战争和测试时遇到了同样的错误:

org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.start(NewProfileExtensionConnection.java:118)

由于在将Firefox升级到第27版(然后是29)之前测试工作正常。我尝试恢复到早期版本的Firefox 18.0.2(http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/18.0.2/win32/en-US/)并且它有效。

答案 6 :(得分:0)

更新你的selenium-java - * .jar文件。

当前版本的selenium-java jar是 selenium-java-2.48.2.jar

所以请使用更新的jar。

如果您不想更新jar文件,那么请禁用您的firefox更新