Selenium TestNG子类继承父类后WebDriver为空空指针异常问题
问题根因
- TestNG执行子类
@Test注解的测试方法前,没有触发父类的LogInCredit()初始化逻辑,driver相关初始化代码从未运行 - 父类
LogInCredit()方法内部重复定义了局部变量WebDriver driver,新创建的ChromeDriver实例被赋值给了方法内的局部变量,类成员变量public WebDriver driver从未被赋值,始终保持null - 你单独跑父类带main方法时正常,是因为main方法中用的是方法内的局部driver实例,没有用到类的成员变量,因此没暴露变量覆盖的问题
修复步骤
1. 修改父类LogInPage代码
给初始化方法加上TestNG前置注解,同时删除局部变量声明,直接给成员变量赋值:
package logInCredit; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.BeforeMethod; public class LogInPage { public WebDriver driver ; @BeforeMethod public void LogInCredit() { // 本地如果没有配置ChromeDriver环境变量,需要显式指定驱动路径 // System.setProperty("webdriver.chrome.driver", "你的本地驱动路径/chromedriver.exe"); // 直接给成员变量赋值,不要重复声明WebDriver driver = new ChromeDriver(); driver.get("https://opensource-demo.orangehrmlive.com/"); driver.manage().window().maximize(); System.out.println(driver); } }
2. 子类新增后置清理逻辑(可选)
建议加@AfterMethod注解,测试用例跑完后自动关闭浏览器释放资源:
package afterLogIn; import org.openqa.selenium.By; import org.openqa.selenium.WebElement; import org.testng.annotations.AfterMethod; import org.testng.annotations.Test; import logInCredit.LogInPage; public class NextLogIn extends LogInPage { @Test public void DashboardPage() { System.out.println("driver is " +driver); // 输入管理员用户名 WebElement AdminUserName = driver.findElement(By.xpath("//input[@name='txtUsername']")); AdminUserName.sendKeys("Admin"); // 输入管理员密码 WebElement AdminPassword = driver.findElement(By.xpath("//input[@name='txtPassword']")); AdminPassword.sendKeys("admin123"); // 点击登录 WebElement LogInButton = driver.findElement(By.xpath("//input[@id='btnLogin']")); LogInButton.click(); WebElement ClickAdmin = driver.findElement(By.xpath("//*[text()='Admin']")); ClickAdmin.click(); WebElement ClickPIM = driver.findElement(By.xpath("//*[text()='PIM']")); ClickPIM.click(); } @AfterMethod public void tearDown() { if(driver != null) { driver.quit(); } } }
3. testng.xml无需修改,直接运行即可,此时driver已经被正确初始化,不会再触发空指针异常
内容的提问来源于stack exchange,提问作者Mohamed Yousuf
相关产品推荐
相关产品推荐

