В моем приложении у меня есть файл свойств, в который я добавил все XPath полей ввода. Через класс слушателя я вызываю базовый класс, чтобы сделать скриншот для неудачных случаев. И в testng. xml также я добавил слушателя. Всякий раз, когда я запускаю testng. xml, он показывает «нулевой указатель», что делает все контрольные примеры неудачными.
Примечание. В базовом классе у меня есть функция инициализации, в которой есть драйвер, URL, войти в детали. А в другие классы я включил слушателя. Всякий раз, когда я запускаю, он показывает «нулевой указатель».
Base Class:
public class base {
public static WebDriver driver;
public void initialization() throws FileNotFoundException{
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("./src/obj.properties");
try {
prop.load(fis);
} catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
driver.get(prop.getProperty("url"));
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
WebElement email = driver.findElement(By.xpath(prop.getProperty("email_path")));
email.sendKeys(prop.getProperty("email"));
email.sendKeys(Keys.TAB);
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
WebElement pass = driver.findElement(By.xpath(prop.getProperty("pwd_path")));
pass.sendKeys(prop.getProperty("pwd"));
WebElement btn = driver.findElement(By.xpath(prop.getProperty("login_btn")));
btn.click();
driver.manage().window().maximize();
}
public void failed(String testmethodname) {
File scrfile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try {
FileUtils.copyFile(scrfile,new File("./screenshots/"+testmethodname+".jpg"));
}catch (IOException e) {
e.printStackTrace();
}
}
Listener Class:
public class listener extends base implements ITestListener{
// private WebDriver driver;
public void onTestStart(ITestResult result) {
// TODO Auto-generated method stub
System.out.println("TestCase started and details are "+result.getName());
}
public void onTestSuccess(ITestResult result) {
// TODO Auto-generated method stub
Reporter.log("TestCase Pass");
}
public void onTestFailure(ITestResult result) {
// TODO Auto-generated method stub
System.out.println("Failed Test cases are "+result.getName());
failed(result.getMethod().getMethodName());
Reporter.log("TestCase Fail");
}
Example Class:
@Listeners(listener.class)
public class example extends base{
@BeforeSuite
public void setUp() throws FileNotFoundException {
initialization();
}
@Test(groups={"IV"},enabled = true, priority = 1)
public void exam() throws FileNotFoundException, InterruptedException {
Properties prop = new Properties();
FileInputStream fis = new FileInputStream("./src/obj.properties");
try {
prop.load(fis);
} catch (IOException e) {
System.out.println(e.getMessage());
e.printStackTrace();
}
JavascriptExecutor jse22 = (JavascriptExecutor) driver;
driver.manage().timeouts().implicitlyWait(20, TimeUnit.SECONDS);
Thread.sleep(500);
new WebDriverWait(driver, 20)
.until(ExpectedConditions.elementToBeClickable(By.xpath(prop.getProperty("path"))))
.click();
WebElement s = driver.findElement(By.xpath(prop.getProperty("a_path")));
s.click();
Thread.sleep(1000);
}
@AfterMethod
public void tearDown() {
driver.quit();
}
Testng.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "https://testng.org/testng-1.0.dtd">
<suite name="Suite">
<listeners>
<listener class-name="pkg.listener"/>
</listeners>
<test name="Test">
<groups>
<run>
<include name="IV"/>
</run>
</groups>
<classes>
<class name="pkg.example"/>
</classes>
</test> <!-- Test -->
</suite> <!-- Suite -->
Ошибка: показывает исключение «нулевой указатель».