Вот мой класс LocalTestRunner, который содержит метод, который получает WebDriver, а также After и BeforeMethod, который его использует. Но я получаю ошибку. Этот код я нашел на GitHub. Я знаю, что этот код не может найти веб-драйвер. Должен ли я написать путь к нему?
java .lang.NullPointerException в dtapi.dtapiBase.LocalTestRunner.getDriver (LocalTestRunner. java: 27) в dtapi.dtapiBase.LocalAdminTestRunner.loadSignInPage (LocalAdminTestRunner. java: 18) в dtapiLoginTest.AdminPageTest.addRouter (AdminPageTest. java: 47)
1009 * public abstract class LocalTestRunner {
public String url = "https://example.com";
public String serverUrlLogout = "https://example.com";
public String adminServerUrl = "https://example.com";
public final Long ONE_SECOND_DELAY = 1000L;
public Map<Long, WebDriver> drivers;
protected WebDriver driver;
public SoftAssert softAssert;
public WebDriver getDriver() {
WebDriver currentWebDriver = drivers.get(Thread.currentThread().getId());
if (currentWebDriver == null) {
currentWebDriver = new ChromeDriver();
currentWebDriver.manage().window().maximize();
currentWebDriver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
drivers.put(Thread.currentThread().getId(), currentWebDriver);
}
return currentWebDriver;
}
@BeforeSuite
public void beforeSuite() {
WebDriverManager.chromedriver().setup();
}
@BeforeClass
public void beforeClass(ITestContext context) {
drivers = new HashMap<>();
for (Map.Entry<String, String> entry : context.getCurrentXmlTest().getAllParameters().entrySet()) {
if (entry.getKey().toLowerCase().equals("url")) {
url = entry.getValue();
}
if (entry.getKey().toLowerCase().equals("serverUrlLogout")) {
serverUrlLogout = entry.getValue();
}
}
}
@AfterClass(alwaysRun = true)
public void afterClass() {
for (Map.Entry<Long, WebDriver> currentWebDriver : drivers.entrySet()) {
if (currentWebDriver.getValue() != null) {
currentWebDriver.getValue().quit();
}
}
}
@BeforeMethod
public void beforeMethod() {
softAssert = new SoftAssert();
getDriver().get(url);
}
@AfterMethod
public void afterMethod(ITestResult result) {
if (!result.isSuccess()) {
System.out.println("***Test " + result.getName() + " ERROR");
// Take Screenshot, save sourceCode, save to log, prepare report, Return to
new ScreenShotHelper(getDriver()).keepPageSourceStatus();
// previous state, logout, etc.
}
getDriver().get(serverUrlLogout);
ApplicationStatus.get().setLogged(false);
}
ОБНОВЛЕНИЕ Я добавил некоторый код в мой pom. xml, но он все еще не работает
<configuration>
<installationDirectory>${project.build.directory}/test-classes</installationDirectory>
<!-- <installationDirectory>${project.basedir}/src/test/resources</installationDirectory>-->
<keepDownloadedWebdrivers>true</keepDownloadedWebdrivers>
<drivers>
<driver>
<name>chromedriver</name>
<!--suppress UnresolvedMavenProperty -->
<platform>${os.detected.name}</platform>
<!-- <platform>windows</platform> -->
<bit>32</bit>
<!-- <version>74.0.3729.6</version> -->
<!-- <url>https://chromedriver.storage.googleapis.com/74.0.3729.6/chromedriver_win32.zip</url> -->
<!-- <version>76.0.3809.126</version> -->
<!-- <url>https://chromedriver.storage.googleapis.com/76.0.3809.126/chromedriver_win32.zip</url> -->
<!-- <url>https://chromedriver.storage.googleapis.com/79.0.3945.36/chromedriver_win32.zip</url> -->
<url>https://chromedriver.storage.googleapis.com/80.0.3987.106/chromedriver_win32.zip</url>
</driver>
</drivers>
</configuration>
Где должен находиться каталог test-classes находиться? в каталоге sr c в моем проекте?
installationDirectory>${project.build.directory}/test-classes</installationDirectory>