У меня есть 4 метода, которые вызывают мой браузер, входят на страницу и выполняют некоторые действия. Когда я запускаю код как приложение Java, открывается браузер и выполняются действия, но когда я запускаю тест TestNG, консоль показывает все 4 пройденных теста, но также показывает Null Pointer Exception
. Кроме того, при выполнении теста testng он не вызывает мой браузер и не выполняет действия.
Код:
package pulse.tpr;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.Assert;
import org.testng.annotations.*;
public class LoginInterface {
public WebDriver driver;
public Actions actions;
public void launchApplication() {
System.setProperty("webdriver.chrome.driver",
"C:\\MyChromeDriver\\chromedriver_win32\\chromedriver.exe");
driver = new ChromeDriver();
driver.get("myURL");
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
driver.manage().timeouts().pageLoadTimeout(30, TimeUnit.SECONDS);
actions = new Actions(driver);
}
public void closeApplication() {
driver.close();
}
@Test(priority = 0)
public void adminLogin() {
try {
actions.moveToElement(driver.findElement(By.name("userId")));
actions.click();
actions.sendKeys("sysadmin");
actions.build().perform();
actions.pause(java.time.Duration.ofSeconds(1));
actions.moveToElement(driver.findElement(By.name("password")));
actions.click();
actions.sendKeys("MMNext13#");
actions.build().perform();
actions.pause(java.time.Duration.ofSeconds(1));
actions.moveToElement(driver.findElement(By.name("dcNumber")));
actions.click();
actions.sendKeys("7036");
actions.build().perform();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test(priority = 1)
public void tprPage() {
try {
actions.moveToElement(driver.findElement(By
.cssSelector("body > ion-app > ng-component > ion-nav > page-login > ion-content > div.scroll-content > ion-card > ion-grid > form > ion-list > div.login-button > button > span")));
actions.click();
actions.build().perform();
actions.moveToElement(driver.findElement(By.id("tab-t0-2")));
actions.click();
actions.build().perform();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
} catch (Exception e) {
e.printStackTrace();
}
}
@Test(priority = 2)
public void createMove() {
try {
actions.moveToElement(driver.findElement(By
.className("send-associates-button")));
actions.click();
actions.build().perform();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
actions.moveToElement(driver.findElement(By
.cssSelector("#tabpanel-t0-2 > send-associate-page > ion-content > div.scroll-content > div > ion-list > ion-item:nth-child(4)")));
actions.click();
actions.build().perform();
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='footers']/ion-toolbar/div[2]/ion-row/ion-col[2]/button")));
actions.click();
actions.build().perform();
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-content/div[2]/div/div/ion-col[2]")));
actions.click();
actions.build().perform();
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-content/div[2]/div/div/ion-col[2]/ion-row[2]")));
actions.click();
actions.build().perform();
driver.manage().timeouts().implicitlyWait(30, TimeUnit.SECONDS);
// Select to area
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-content/div[2]/div/div/ion-col[2]")));
actions.click();
actions.build().perform();
// Select to area
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-content/div[2]/div/div/ion-col[2]/ion-row[2]")));
actions.click();
actions.build().perform();
// Next button in to area page
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-footer/button")));
actions.click();
actions.build().perform();
} catch (Exception e) {
e.printStackTrace();
}
}
@Test(priority = 3)
public void rightNowToClockout() {
try {
// Right Now Time
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-content/div[2]/div/div/ion-row[4]")));
actions.click();
actions.build().perform();
// Next Button
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-footer/button")));
actions.click();
actions.build().perform();
// Clockout time
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-content/div[2]/div/div/ion-row[2]/ion-col")));
actions.click();
actions.build().perform();
// Next button
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-footer/button")));
actions.click();
actions.build().perform();
// Send Button
actions.moveToElement(driver.findElement(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-send-associates-page/ion-footer/ion-row/ion-row")));
actions.click();
actions.build().perform();
WebDriverWait wait = new WebDriverWait(driver, 60);
wait.until(ExpectedConditions.visibilityOfElementLocated(By
.xpath("//*[@id='tabpanel-t0-2']/tpr-summary-page/ion-content/div[2]/div/div[2]/div/ion-card/ion-row[1]/ion-col/ion-row[2]")));
String element = driver
.findElement(
By.xpath("//*[@id='tabpanel-t0-2']/tpr-summary-page/ion-content/div[2]/div/div[2]/div[1]/ion-card/ion-row[1]/ion-col/ion-row[2]/div[1]/label[1]"))
.getText();
Assert.assertTrue(element.contains("1:35"));
} catch (Exception e) {
e.printStackTrace();
}
}
public static void main(String[] args) {
LoginInterface obj = new LoginInterface();
obj.launchApplication();
obj.adminLogin();
obj.tprPage();
obj.createMove();
obj.rightNowToClockout();
}
}
А ниже - ошибка testNG:
java.lang.NullPointerException
at pulse.tpr.LoginInterface.adminLogin(LoginInterface.java:38)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
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)
java.lang.NullPointerException
at pulse.tpr.LoginInterface.tprPage(LoginInterface.java:67)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source)
at java.lang.reflect.Method.invoke(Unknown Source)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:124)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:583)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:719)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:989)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:125)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:109)
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)