12

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

至今:

  • 拥有最新版本的 selenium

  • 安装了旧版本的火狐

我在 Windows 7 上有 Eclipse,我创建了一个 .war 并在 localhost:8080/JSPprojectServlets (在 W7 上)下的 Eclipse 中进行了测试,它工作正常。selenium 打开 Firefox,获取 url,然后获取源。

然后我将 .war 文件放入我的 linux (ubuntu) 机器下的 tomcat7/webapps 并尝试使用我的 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 64bit 并且安装了 FF10 仍然没有。

4

7 回答 7

7

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

接收 org.openqa.selenium.WebDriverException:在 Selenium IDE 中使用 Webdriver 播放的 PATH 运行测试中找不到 firefox 二进制文件

于 2013-09-28T20:16:55.070 回答
1

我有同样的问题。我到处都发现根本原因是版本问题,确实是这样。这是在迁移到 Selenium Web 驱动程序的最新版本后排序的,即从 2.32 到 2.39(因为所有其他组件,如 Java/Web 浏览器等已经是最新的)。现在所有脚本都运行良好。

于 2014-01-03T18:11:17.463 回答
1

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

这解决了我面临的同样问题。这主要发生在我们位于代理服务器之后。

于 2013-09-25T06:04:02.107 回答
1

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

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

这些更改使我的代码在我的情况下完美无缺

于 2015-11-26T11:18:42.203 回答
0

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

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

因为在将 Firefox 升级到 v 27(然后是 29)之前测试是有效的。我尝试恢复到早期版本的 Firefox 18.0.2 ( http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/18.0.2/win32/en-US/ ) 并且成功了。

于 2014-06-03T18:36:12.393 回答
0

我在使用 ChromeDriver 时遇到过这样的问题,我无法运行测试,因为我的 chromedriver 不支持我在计算机上安装的 google chrome 版本。

与其安装旧版本的 Firefox,并使用更新的 FirefoxDriver,不如通过更新两者来确保两者都符合要求

于 2013-09-29T09:41:46.307 回答
0

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

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

所以请使用更新的jar。

如果您不想更新 jar 文件,在这种情况下禁用您的 firefox 更新

于 2015-12-29T11:31:54.433 回答