![](/img/trans.png)
[英]Getting NullPointerException when trying to generate test reports using ExtentReports in TestNG
[英]Getting error when trying to run a test with TestNG and WebDriverManager
嘗試使用TestNG和WebDriverManager執行測試時出現此錯誤。 我正在使用的依賴是Maven的https://github.com/bonigarcia/webdrivermanager-examples中提到的依賴,TestNG的版本是6.14.3。
我的代碼很簡單:
private WebDriver driver;
@BeforeClass
public void setupClass() {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}
@AfterTest
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here
}
我得到這個錯誤:
[RemoteTestNG] detected TestNG version 6.14.3
FAILED CONFIGURATION: @BeforeClass setupClass
java.lang.NoSuchMethodError: org.apache.http.impl.client.HttpClientBuilder.setConnectionManagerShared(Z)Lorg/apache/http/impl/client/HttpClientBuilder;
at io.github.bonigarcia.wdm.HttpClient.<init>(HttpClient.java:97)
at io.github.bonigarcia.wdm.HttpClient.<init>(HttpClient.java:91)
at io.github.bonigarcia.wdm.WebDriverManager.manage(WebDriverManager.java:407)
at io.github.bonigarcia.wdm.WebDriverManager.setup(WebDriverManager.java:215)
at com.cuballama.automation.framework.Prueba.setupClass(Prueba.java:45)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:168)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
SKIPPED CONFIGURATION: @AfterTest teardown
SKIPPED: test
java.lang.NoSuchMethodError: org.apache.http.impl.client.HttpClientBuilder.setConnectionManagerShared(Z)Lorg/apache/http/impl/client/HttpClientBuilder;
at io.github.bonigarcia.wdm.HttpClient.<init>(HttpClient.java:97)
at io.github.bonigarcia.wdm.HttpClient.<init>(HttpClient.java:91)
at io.github.bonigarcia.wdm.WebDriverManager.manage(WebDriverManager.java:407)
at io.github.bonigarcia.wdm.WebDriverManager.setup(WebDriverManager.java:215)
at com.cuballama.automation.framework.Prueba.setupClass(Prueba.java:45)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:564)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.MethodInvocationHelper.invokeMethodConsideringTimeout(MethodInvocationHelper.java:59)
at org.testng.internal.Invoker.invokeConfigurationMethod(Invoker.java:458)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:222)
at org.testng.internal.Invoker.invokeConfigurations(Invoker.java:142)
at org.testng.internal.TestMethodWorker.invokeBeforeClassMethods(TestMethodWorker.java:168)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:105)
at org.testng.TestRunner.privateRun(TestRunner.java:648)
at org.testng.TestRunner.run(TestRunner.java:505)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:455)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:450)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:415)
at org.testng.SuiteRunner.run(SuiteRunner.java:364)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:84)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1208)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1137)
at org.testng.TestNG.runSuites(TestNG.java:1049)
at org.testng.TestNG.run(TestNG.java:1017)
at
org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:114)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
有任何想法嗎?
謝謝!
檢查您的配置,該示例正在使用JUnit,並且您已切換到TestNG。 您還從github配置6.13更新了TestNG版本。 我檢查了您的TestNG版本,這似乎沒有問題。
package io.github.bonigarcia.wdm.test;
import static org.openqa.selenium.support.ui.ExpectedConditions.*;
//import org.junit.After;
//import org.junit.Before;
//import org.junit.BeforeClass;
//import org.junit.Test;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterTest;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;
import io.github.bonigarcia.wdm.WebDriverManager;
/**
* Test with Chrome.
*
* @author Boni Garcia (boni.gg@gmail.com)
* @since 1.0.0
*/
public class ChromeTestNG {
private WebDriver driver;
@BeforeClass
public void setupClass() {
WebDriverManager.chromedriver().setup();
driver = new ChromeDriver();
}
@AfterTest
public void teardown() {
if (driver != null) {
driver.quit();
}
}
@Test
public void test() {
// Your test code here. For example:
// WebDriverWait wait = new WebDriverWait(driver, 30);
// driver.get("https://en.wikipedia.org/wiki/Main_Page");
// By searchInput = By.id("searchInput");
// wait.until(presenceOfElementLocated(searchInput));
// driver.findElement(searchInput).sendKeys("Software");
// By searchButton = By.id("searchButton");
// wait.until(elementToBeClickable(searchButton));
// driver.findElement(searchButton).click();
//
// wait.until(textToBePresentInElementLocated(By.tagName("body"),
// "Computer software"));
}
}
我做了以下事情:
git clone https://github.com/bonigarcia/webdrivermanager-examples.git
git clone https://github.com/bonigarcia/webdrivermanager.git
download and install chromedriver 2.40
update Chrome version to 66
NOTE: I'm running on Ubuntu
注意:您也可以取消注釋測試代碼,它也對我有用
在多挖掘一點之后,我可以找到問題的原因。 我在Maven中缺少一些依賴項。
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-api</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>org.slf4j</groupId>
<artifactId>slf4j-simple</artifactId>
<version>1.6.6</version>
</dependency>
<dependency>
<groupId>net.sf.dozer</groupId>
<artifactId>dozer</artifactId>
<version>5.5.1</version>
<exclusions>
<exclusion>
<artifactId>jcl-over-slf4j</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
<exclusion>
<artifactId>slf4j-api</artifactId>
<groupId>org.slf4j</groupId>
</exclusion>
</exclusions>
</dependency>
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.2</version>
</dependency>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.