selenium和TestNG中的屏幕截图侦听器

selenium和TestNG中的屏幕截图侦听器,selenium,selenium-webdriver,automation,testng,Selenium,Selenium Webdriver,Automation,Testng,我有一个将驱动程序作为非静态变量调用的测试用例。我还在测试用例中添加了截图侦听器。当测试用例失败时,控件将自动发送到屏幕截图侦听器,但是由于我的驱动程序是一个非静态变量,因此无法在屏幕截图侦听器中访问它。所以我得到了null指针异常 为了解决这个问题,我在stackoverflow的帮助下创建了一个简单的基本测试类,如下所示,并在每个测试类中扩展它 public asbtract baseTest(){ 私有网络驱动程序; 公共WebDriver getDriver(){ 返回驱动器; } @

我有一个将驱动程序作为非静态变量调用的测试用例。我还在测试用例中添加了截图侦听器。当测试用例失败时,控件将自动发送到屏幕截图侦听器,但是由于我的驱动程序是一个非静态变量,因此无法在屏幕截图侦听器中访问它。所以我得到了null指针异常

为了解决这个问题,我在stackoverflow的帮助下创建了一个简单的基本测试类,如下所示,并在每个测试类中扩展它

public asbtract baseTest(){
私有网络驱动程序;
公共WebDriver getDriver(){
返回驱动器;
}
@预处理法
public void createDriver(){
Webdriver-driver=XXXXDriver();
}
@后置法
public void拆卸驱动程序(){
if(驱动程序!=null)
{
尝试
{
driver.quit();
}
catch(webdrivexception){
System.out.println(“******在驱动程序拆卸中捕获异常*****”);
系统输出打印ln(e);
}
}

}
您可以在@BeforeClass方法中创建登录对象

@BeforeClass(alwaysRun = true)

public void setUp() throws Exception {
    login = new Login(getDriver());
}

这是不可能的,因为它会在实例化对象时调用此函数,但驱动程序是在@before方法上实例化的,而@before方法是在@before方法之后调用的