【问题标题】:Getting IllegalAccessError warning收到 IllegalAccessError 警告
【发布时间】:2017-05-02 08:29:32
【问题描述】:

我正在尝试在 selenium-java 中编写我的第一个程序,但是在几行的简短程序中,我遇到了以下错误:

线程 "main" java.lang.IllegalAccessError 中的异常:试图从类 org.openqa.selenium.firefox.FirefoxBinary 访问类 org.openqa.selenium.os.ExecutableFinder 在 org.openqa.selenium.firefox.FirefoxBinary.locateFirefoxBinariesFromPlatform(FirefoxBinary.java:418) 在 org.openqa.selenium.firefox.FirefoxBinary.(FirefoxBinary.java:108) 在 java.util.Optional.orElseGet(未知来源) 在 org.openqa.selenium.firefox.FirefoxDriver.toExecutor(FirefoxDriver.java:204) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:108) 在 org.openqa.selenium.firefox.FirefoxDriver.(FirefoxDriver.java:104) 在 com.packt.selenium.chapter1.NavigateToAUrl.main(NavigateToAUrl.java:12)

我的代码是:

package com.packt.selenium.chapter1;   
import org.openqa.selenium.WebDriver;    
import org.openqa.selenium.firefox.FirefoxDriver;

public class NavigateToAUrl 
{
    public static void main(String[] args) 
    {
        WebDriver driver = new FirefoxDriver();
        driver.get("http://www.google.com");

    }
}

【问题讨论】:

    标签: selenium


    【解决方案1】:

    在我的情况下,这是由于类路径上有不同版本的 selenium 工件引起的。

    我使用gebish:org.grails.plugins:geb:1.1.1,这取决于:

    • org.seleniumhq.selenium:selenium-api:2.53.1
    • org.seleniumhq.selenium:selenium-remote-driver:2.53.1

    另一方面,我尝试使用 org.seleniumhq.selenium:selenium-firefox-driver:3.4.0

    selenium-apiselenium-remote-driverselenium-support 升级到版本3.4.0 后一切正常。

    【讨论】:

      【解决方案2】:

      要使用 Selenium 3.4.0 和 Mozilla Firefox 浏览器 53.x,您需要从 here 下载最新的 geckodriver v0.16.1。将其保存在您的机器中并提供 geckodriver 的绝对路径。只需对您自己的代码进行一些简单的调整,此代码就可以很好地执行。

          System.setProperty("webdriver.gecko.driver", "C:\\Utility\\BrowserDrivers\\geckodriver.exe");
          WebDriver driver =  new FirefoxDriver();
          driver.manage().window().maximize();
          driver.get("http://www.google.com");
      

      如果这对你有帮助,请告诉我。

      【讨论】:

      • 感谢您的快速回复。我有 Selenium 3.4.0 和 Mozilla Firefox 53.x。我已经用 geckodriver v0.16.1 试过了,但它仍然显示同样的问题。
      • @Punk23 可以用您更新的代码和错误堆栈跟踪来更新问题吗?
      【解决方案3】:

      试试下面的代码:

      package com.packt.selenium.chapter1;  
      import java.util.concurrent.TimeUnit;
      import org.openqa.selenium.WebDriver;
      import org.openqa.selenium.WebElement;
      import org.openqa.selenium.firefox.FirefoxDriver;
      
      public class sample {
          public static void main(String[] a) {
              WebDriver driver;
              System.setProperty("webdriver.firefox.marionette", "C:\\geckodriver.exe");
              driver = new FirefoxDriver();
              driver.manage().window().maximize();
              driver.manage().timeouts().implicitlyWait(160, TimeUnit.SECONDS);
              driver.get("http://google.com");
      
          }
      }
      

      确保

      1) Selenium server standalone jar 文件已添加到您的项目中
      2) Client combined jar 文件被添加到你的项目中,它带有 selenium java jar 文件包。
      3) Geckodriver path 是正确的,geckodriver.exe 出现在提到的位置。

      不要坚持使用 selenium 中的主要方法方法。将 TestNG 与 selenium 集成,然后编写脚本。如果您使用TestNG,您将获得许多附加功能。推荐!

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2011-04-30
        • 2011-09-16
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-06-09
        • 2011-10-07
        • 2019-01-20
        相关资源
        最近更新 更多