我试图在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");
}
}
答案 0 :(得分: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-api
,selenium-remote-driver
和selenium-support
升级到版本3.4.0
后一切正常。
答案 1 :(得分:0)
要使用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");
如果这有助于您,请告诉我。
答案 2 :(得分:-1)
尝试以下代码:
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
出现在上述位置。
不要坚持硒中的主要方法。将TestNG
与selenium集成,然后编写脚本。如果您使用TestNG,您将获得许多其他功能。推荐!