所以,当我尝试使用jar文件中的chromedriver时,我得到一个例外:
Exception in thread "main" java.lang.NoClassDefFoundError: org/openqa/selenium/chrome/ChromeDriver
at SelJarTest.main(SelJarTest.java:13)
Caused by: java.lang.ClassNotFoundException: org.openqa.selenium.chrome.ChromeDriver
at java.net.URLClassLoader.findClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
at sun.misc.Launcher$AppClassLoader.loadClass(Unknown Source)
at java.lang.ClassLoader.loadClass(Unknown Source)
但是,当我从IDE(IntelliJ CE)运行程序时,它可以正常工作。
这是我的Maven依赖项:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.openqa.selenium.chrome.ChromeDriver</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-remote-driver</artifactId>
<version>3.0.1</version>
</dependency>
</dependencies>
我的代码:
public class SelJarTest
{
private static final String WEB_DRIVER_PROP = "webdriver.chrome.driver");
public static void main(String[] args)
{
String oldProp = System.getProp(WEB_D_PROP);
System.setProp(WEB_DRIVER_PROP, "chromedriver" + File.seperator + "chromedriver.exe");
ChromeDriver cd = new ChromeDriver();
System.out.println("Enter stuff: ");
int userin;
Scanner scan = new Scanner(System.in);
while((userin = Integer.parseInt(scan.nextLine())) < 9)
{
if(userin %2 == 0)
cd.navigate().to("https://www.youtube.com");
}
scan.close();
cd.close();
System.clearProp(WEB_DRIVER_PROP);
if(oldProp != null)
System.setProp(WEB_DRIVER_PROP, oldProp);
System.out.println("Done.");
}
}
为了更清楚一点,chromedriver.exe位于名为chromedriver的文件夹中,该文件夹与jar在同一目录中:
DIR> chromedriver/chromedriver.exe
SelJarTest.jar
我在网上找到的任何内容似乎都无法解决这个问题。发现类似于错误的是一堆“哦,你需要这样的依赖,或者这样的文件。”我想避免使用环境变量,这样我的同事就可以运行程序,如果我将文件放在服务器上供他们使用。
非常感谢任何帮助。
答案 0 :(得分:0)
尝试添加以下
中的selenium依赖项<scope>test</scope>
使用以下命令运行测试
mvn test
答案 1 :(得分:-1)
我找到了解决困境的方法。我没有用我需要的东西创建jar文件。
我使用IntelliJ作为我的IDE,我应该从具有依赖项的模块创建Jar工件。
项目结构&gt;
我的依赖关系最终成为:
<dependencies>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.0.1</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-chrome-driver</artifactId>
<version>2.26.0</version>
</dependency>
</dependencies>