Firefox 56.0没有使用Selenium 3.7和Gecko驱动程序0.19打开

时间:2017-11-04 02:13:06

标签: java selenium firefox selenium-webdriver

我正在尝试使用2017年2月1日发布的Selenium 3.7版本打开Firefox 56,我的Win 8.1中的路径也是在环境变量中设置的。我得到NoClassDefFoundError

错误截图:https://snag.gy/mI23xp.jpg

版本信息: Java 1.8.091 | 硒3.7 | Gecko driver geckodriver-v0.19.1-win64.zip | Firefox 56

我的代码:

 package new_Package;
    import org.openqa.selenium.WebDriver;
    import org.openqa.selenium.firefox.FirefoxDriver;

    public class Selenium_Basics {
        public static void main(String[] args) throws InterruptedException {
            System.setProperty("webdriver.gecko.driver", "C:\\Users\\user\\workspace\\Gecko Driver\\geckodriver.exe");
            WebDriver driver = new FirefoxDriver();
            driver.get("http://www.google.com");
        }
    }

我尝试过在StackOverFlow和其他网站上建议的类似问题的解决方法,例如尝试使用不同的Firefox版本,设置DesiredCapabilities或为Firefox设置二进制文件,但还没有任何结果。

或者我最近在检查站进行了调试。

package new_Package;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
public class Selenium_Basics {
    public static void main(String[] args) {
        System.setProperty("webdriver.gecko.driver", "C:\\Gecko Driver\\geckodriver.exe");
        System.out.println("Debug 1");
        WebDriver driver = new FirefoxDriver();
        System.out.println("Debug 2");
        driver.get("https://stackoverflow.com");
        driver.quit();

    }
}

错误堆栈跟踪:

调试1

Exception in thread "main" org.openqa.selenium.WebDriverException: org.apache.http.conn.HttpHostConnectException: Connect to localhost:12121 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
Build info: version: '3.7.0', revision: '2321c73', time: '2017-11-02T22:12:07.291Z'
System info: host: 'LENOVO', ip: '192.168.0.6', os.name: 'Windows 8.1', os.arch: 'amd64', os.version: '6.3', java.version: '1.8.0_91'
Driver info: driver.version: FirefoxDriver
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:92)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:600)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:219)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:142)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:120)
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:98)
    at new_Package.Selenium_Basics.main(Selenium_Basics.java:12)
Caused by: org.apache.http.conn.HttpHostConnectException: Connect to localhost:12121 [localhost/127.0.0.1, localhost/0:0:0:0:0:0:0:1] failed: Connection refused: connect
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:159)
    at org.apache.http.impl.conn.PoolingHttpClientConnectionManager.connect(PoolingHttpClientConnectionManager.java:359)
    at org.apache.http.impl.execchain.MainClientExec.establishRoute(MainClientExec.java:381)
    at org.apache.http.impl.execchain.MainClientExec.execute(MainClientExec.java:237)
    at org.apache.http.impl.execchain.ProtocolExec.execute(ProtocolExec.java:185)
    at org.apache.http.impl.execchain.RetryExec.execute(RetryExec.java:89)
    at org.apache.http.impl.execchain.RedirectExec.execute(RedirectExec.java:111)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:185)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:72)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:56)
    at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:138)
    at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:86)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:101)
    at org.openqa.selenium.remote.ProtocolHandshake.createSession(ProtocolHandshake.java:73)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:142)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
    ... 6 more
Caused by: java.net.ConnectException: Connection refused: connect
    at java.net.DualStackPlainSocketImpl.waitForConnect(Native Method)
    at java.net.DualStackPlainSocketImpl.socketConnect(DualStackPlainSocketImpl.java:85)
    at java.net.AbstractPlainSocketImpl.doConnect(AbstractPlainSocketImpl.java:350)
    at java.net.AbstractPlainSocketImpl.connectToAddress(AbstractPlainSocketImpl.java:206)
    at java.net.AbstractPlainSocketImpl.connect(AbstractPlainSocketImpl.java:188)
    at java.net.PlainSocketImpl.connect(PlainSocketImpl.java:172)
    at java.net.SocksSocketImpl.connect(SocksSocketImpl.java:392)
    at java.net.Socket.connect(Socket.java:589)
    at org.apache.http.conn.socket.PlainConnectionSocketFactory.connectSocket(PlainConnectionSocketFactory.java:75)
    at org.apache.http.impl.conn.DefaultHttpClientConnectionOperator.connect(DefaultHttpClientConnectionOperator.java:142)
    ... 21 more

1 个答案:

答案 0 :(得分:0)

我的代码块中没有看到任何此类错误。当 NoClassDefFoundError 找不到 JRE 时,会发现错误 Class

简单来说,所需的importsjar文件不可用。在这种情况下,您需要执行以下步骤:

  1. 删除所有参考以前版本的 Selenium standalone server &amp;的 Selenium Java client
  2. 仅导入 selenium-server-standalone-3.7.0
  3. IDE 菜单中的 Project 中,选择 Build Automatically 选项并执行所有项目的 Clean 选项。
  4. 执行测试。