如何解决第二类为TestNG抛出Null Pointer异常
我使用TestNG为每个网页创建了不同的类。我的第一堂课工作得很好,但是第二堂课则抛出了空指针异常。如果我只在一个类中结合使用相同的脚本,则可以正常工作。
下面是我的基类
package Test;
import org.testng.annotations.Test;
import Pages.FM_login;
import org.testng.annotations.BeforeTest;
import java.util.concurrent.TimeUnit;
import org.openqa.selenium.By;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.testng.annotations.AfterClass;
import org.testng.annotations.AfterTest;
public class Baseclass {
WebDriver driver;
FM_login objLogin;
@BeforeTest
public void setup() {
System.setProperty("webdriver.chrome.driver","C:\\Users\\****\\Downloads\\chromedriver.exe");
String url = "http://vatlookup.cloudfront.net";
driver = new ChromeDriver();
driver.manage().window().maximize();
driver.get(url);
driver.manage().timeouts().implicitlyWait(60,TimeUnit.SECONDS);
String Title = driver.getTitle();
System.out.println(Title);
System.out.println("Application Launch successful");
// Accept the cookie policy
driver.findElement(By.xpath("//a[@class='cc-btn cc-allow']")).click();
}
@Test
public void Login() {
objLogin = new FM_login(driver);
objLogin.GoToLoginScreen();
objLogin.loginToFleetMatch("abc","123");
System.out.println("Login Successful");
}
@AfterTest(enabled=false)
public void teardown() {
driver.close();
}
这是另一堂课
package Test;
import org.openqa.selenium.WebDriver;
import org.testng.annotations.Test;
import Pages.FM_Profile;
public class Profile {
WebDriver driver;
FM_Profile objProfile;
@Test
public void Skip_Tutorial() {
objProfile = new FM_Profile(driver);
driver.getCurrentUrl();
objProfile.SkipTutorial();
}
@Test(enabled=false)
public void edit_profile() {
objProfile.edit_profile();
}
}
下面是第二类的页面对象
package Pages;
import org.openqa.selenium.By;
import org.openqa.selenium.JavascriptExecutor;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
public class FM_Profile {
WebDriver driver;
By company_name = By.xpath("//p[@id='company-name']");
By plan_details = By.xpath("//p[@id='current-plan']");
By End_tour = By.xpath("//button[@class='driver-close-btn']");
By edit_profile = By.xpath("//span[contains(text(),'Edit')]");
By Description = By.xpath("//textarea[@id='mat-input-10']");
By Upload_image = By.xpath("//div[@class='upload-btn continental-book ng-star-inserted']");
By Save_profile = By.xpath("//button[@class='save-btn continental-book mat-stroked-button mat-button-base mat-primary editMode cdk-focused cdk-mouse-focused']");
public FM_Profile(WebDriver driver) {
this.driver = driver;
}
public void SkipTutorial() {
driver.findElement(End_tour).click();
}
执行后,显示第二个类的java.lang.NullPointerException
错误
java.lang.NullPointerException
at Test.Profile.Skip_Tutorial(Profile.java:16)
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:567)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:135)
at org.testng.internal.TestInvoker.invokeMethod(TestInvoker.java:598)
at org.testng.internal.TestInvoker.invokeTestMethod(TestInvoker.java:174)
at org.testng.internal.MethodRunner.runInSequence(MethodRunner.java:46)
at org.testng.internal.TestInvoker$MethodInvocationAgent.invoke(TestInvoker.java:821)
at org.testng.internal.TestInvoker.invokeTestMethods(TestInvoker.java:147)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:146)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:128)
at java.base/java.util.ArrayList.forEach(ArrayList.java:1507)
at org.testng.TestRunner.privateRun(TestRunner.java:767)
at org.testng.TestRunner.run(TestRunner.java:588)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:384)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:378)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:337)
at org.testng.SuiteRunner.run(SuiteRunner.java:286)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:96)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1214)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1136)
at org.testng.TestNG.runSuites(TestNG.java:1066)
at org.testng.TestNG.run(TestNG.java:1034)
at org.testng.remote.AbstractRemoteTestNG.run(AbstractRemoteTestNG.java:115)
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:251)
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:77)
解决方法
在您的Profile类中,未初始化驱动程序对象。您要初始化的驱动程序对象位于BaseClass和该类的实例中。您还需要在Profile类中初始化驱动程序对象
,WebDriver从未初始化。
WebDriver驱动程序=新的WebDriver();
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。