这是我使用TestNG和Maven的第一个selenium脚本。 创建了一个简单的" Hello World"代码和硒测试代码,只检查谷歌页面的标题。
下面的Selenium代码与TestNG:
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.firefox.FirefoxDriver;
import org.testng.annotations.Test;
public class HelloTest {
@Test
public void testOne() {
//WebDriver d=new FirefoxDriver();
System.setProperty("webdriver.gecko.driver","D:\\Firefox Driver\\geckodriver-v0.17.0-win64\\geckodriver.exe");
WebDriver d=new FirefoxDriver();
d.get("https://www.google.com");
System.out.println("This is first TestNG");
}
}
这在通过eclipse运行时非常好 - 运行为 - 测试NG测试。
但是当通过Maven运行时 - 从cmd提示符下的mvn clean install,我收到了以下错误
T E S T S
-------------------------------------------------------
Running HelloTest
Configuring TestNG with: TestNG652Configurator
Tests run: 1, Failures: 1, Errors: 0, Skipped: 0, Time elapsed: 0.94 sec <<< FAILURE! - in HelloTest
testOne(HelloTest) Time elapsed: 0.032 sec <<< FAILURE!
java.lang.NoClassDefFoundError: org/openqa/selenium/firefox/FirefoxDriver
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)
at HelloTest.testOne(HelloTest.java:11)
在WebDriver d=new FirefoxDriver();
显示错误。不确定问题出在哪里。添加了所有jar文件,检查了构建路径,所有jar都在那里。下面是我的POM文件。
<?xml version="1.0"?>
<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
<modelVersion>4.0.0</modelVersion>
<groupId>com.demo.micky</groupId>
<artifactId>MavenDemoTwo</artifactId>
<version>0.0.1-SNAPSHOT</version>
<build>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.18.1</version>
</plugin>
</plugins>
</build>
<dependencies>
<dependency>
<groupId>org.testng</groupId>
<artifactId>testng</artifactId>
<version>6.9.8</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.12.0</version>
<scope>test</scope>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.12.0</version>
</dependency>
<dependency>
<artifactId>guava</artifactId>
<groupId>com.google.guava</groupId>
<type>jar</type>
<version>15.0</version>
</dependency>
</dependencies>
</project>
非常感谢任何帮助。
答案 0 :(得分:1)
NoClassDefFoundError 编译时< / em>的。例如,如果我们已经解析了来自 Class 的方法调用或访问 Class 的任何静态成员,并且 Class 在<期间< em> runtime 然后 JVM 将抛出 NoClassDefFoundError 。
您看到的错误是:
java.lang.NoClassDefFoundError: org/openqa/selenium/firefox/FirefoxDriver
这清楚地表明Selenium
正试图在运行时从 org/openqa/selenium/firefox/FirefoxDriver
解决特定的 FirefoxDriver 类不可用。
如果通过 JDK
/ Maven
/ {存在多个来源来解析类和方法,则会出现这种情况{1}} 强>
从 pom.xml ,很明显您已为 FirefoxDriver Class 添加了多个依赖项,如下所示:
<强> Gradle
强>:
<artifactId>selenium-java</artifactId>
<强> <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-java</artifactId>
<version>3.12.0</version>
<scope>test</scope>
</dependency>
强>:
<artifactId>selenium-firefox-driver</artifactId>
<强> <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-firefox-driver</artifactId>
<version>3.12.0</version>
</dependency>
强>:
<artifactId>selenium-server</artifactId>
此外,您还添加了所有jar文件。
从上述所有观点可以清楚地看出,相关的 <dependency>
<groupId>org.seleniumhq.selenium</groupId>
<artifactId>selenium-server</artifactId>
<version>3.12.0</version>
</dependency>
或 Class
是从一个来源解决的。 strong>编译时间,在运行时期间无效。
以下是解决 NoClassDefFoundError 的几个步骤:
Methods
)以解析 Classes 和方法 pom.xml
或 <artifactId>selenium-java</artifactId>
。避免同时使用两者。<artifactId>selenium-server</artifactId>
执行 Maven项目时,请始终按顺序执行顺控:
pom.xml
maven clean
maven install
您可以在以下网址找到相关讨论:
答案 1 :(得分:0)
我使用的是eclipse 09-2019,它是最新的Eclipse,安装了最新的JDK 13,以及最新的硒罐文件3.141.59,在尝试了类似问题的所有答案后,我安装了其他JDK来解决此问题。然后经过4天的尝试,安装了eclipse霓虹灯版本(https://www.eclipse.org/downloads/download.php?file=/technology/epp/downloads/release/neon/3/eclipse-java-neon-3-win32-x86_64.zip&mirror_id=105)并使用了Selenium-Java 3.5.2 jar文件(https://jar-download.com/artifacts/org.seleniumhq.selenium/selenium-java/3.5.2/source-code),现在Alhamdullilah可以正常使用。 我也不知道根本或根本原因是什么错误,但是现在已经解决了。 希望对您有帮助