Selenium webdriver 由于onTestFailureMethod中的驱动程序实例为Null,导致Null指针异常
需要帮助-我在onTestFailure方法中遇到空指针异常。若我的@Test方法中的任何一个失败,控制将转到onTestFailure,但该方法中的驱动程序为null。我的密码是-Selenium webdriver 由于onTestFailureMethod中的驱动程序实例为Null,导致Null指针异常,selenium-webdriver,testng,Selenium Webdriver,Testng,需要帮助-我在onTestFailure方法中遇到空指针异常。若我的@Test方法中的任何一个失败,控制将转到onTestFailure,但该方法中的驱动程序为null。我的密码是- import statements... @Listeners(ScreenShot.class) public class ScreenShot implements ITestListener{ WebDriver driver; @BeforeClass public void lau
import statements...
@Listeners(ScreenShot.class)
public class ScreenShot implements ITestListener{
WebDriver driver;
@BeforeClass
public void launch(){
System.setProperty("webdriver.ie.driver", "D:\\Jars\\Drivers\\IEDriverServer.exe");
driver = new InternetExplorerDriver();
driver.get("url");
}
@Test
public void test1(){
//driver.findElement(By.id("Email")).sendKeys("E@E.COM");
System.out.println("Method1 begins");
//some code here - exception occurs here
System.out.println("Method ended");
}
public void onTestFailure(ITestResult result){
File scrFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE); //Getting exception here as driver is null
try {
FileUtils.copyFile(scrFile, new File("C:\\snaps\\"+result.getMethod().getMethodName()+".png"));
} catch (IOException e) {
// TODO Auto-generated catch block
e.printStackTrace();
}
}
我通过右键单击->以testng方式运行这个类 获取NullPointerException的原因是Testng为每个侦听器创建了一个新实例。因此,新实例的驱动程序尚未初始化 在您的例子中,运行@Test方法的Screenshot类的对象和TestNG调用的Screenshot类作为侦听器的实例是不同的 有两种方法可以解决这个问题
@AfterMethod
public void afterMet(ITestResult res){
if(res.isSuccess())
将webdriver设置为静态并重试。是的,您可以通过@niharika_neo所述的任何方式实现您的结果。。。