selenium java 高级技巧篇(必学)TestNG监听错误case截图(八)

监听主要是针对注解了@Test 的方法的执行结果,对于执行了多少用例。多少成功了,多少失败了返回的信息打印到控制台

 

1编写一个listener .java类

2继承监听的父类

3重写失败的方法

package seleniumTest;

import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;

import org.openqa.selenium.OutputType;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.testng.ITestResult;
import org.testng.TestListenerAdapter;
import com.google.common.io.Files;

public class listener extends TestListenerAdapter {
	WebDriver driver;
	
	  @Override
	  public void onTestFailure(ITestResult tr) {
		  TestNgLogin tg= (TestNgLogin)tr.getInstance();
		  driver=tg.driver;
		  System.out.println("失败了,要截图");
		  takeScreenShot(driver);
	    super.onTestFailure(tr);
	  }
	  public void takeScreenShot(WebDriver driver) {
		  SimpleDateFormat sdf=new SimpleDateFormat("yyyy_MM_dd_HH_mm_ss");
		  String curTime=sdf.format(new Date());
		  String curClassName=this.getClass().getName();
		  String pngPath=curClassName+"_"+curTime+".png";
		  
		  String curPath=System.getProperty("user.dir");
		  File scr=((RemoteWebDriver)driver).getScreenshotAs(OutputType.FILE);
		  try {
			Files.copy(scr, new File(curPath+"\\"+pngPath));
		} catch (IOException e) {
			// TODO 自动生成的 catch 块
			e.printStackTrace();
		}
	  }
	  
}

 

1,创建一个testNg类型的测试文件

2使用注解监听@Listeners({类名.class})

3,使用断言失败语句Assert.fail("假装失败了");

package seleniumTest;

import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.Assert;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;

import com.google.common.io.Files;

import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;

import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.AfterClass;
import org.testng.annotations.Test;
import org.testng.annotations.BeforeClass;
import org.testng.annotations.Test;

import Help.HaveOrNo;
import Help.yanzheng.Captcha;
import Help.yanzheng.DamaUtil;

import org.testng.annotations.BeforeMethod;
import org.testng.annotations.AfterMethod;
import org.testng.annotations.BeforeClass;

import java.awt.image.BufferedImage;
import java.io.File;
import java.io.IOException;
import java.util.List;

import javax.imageio.ImageIO;

import org.openqa.selenium.By;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.Point;

import org.openqa.selenium.WebDriver;
import org.openqa.selenium.WebElement;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.interactions.Actions;
import org.openqa.selenium.remote.RemoteWebDriver;
import org.openqa.selenium.support.ui.ExpectedConditions;
import org.openqa.selenium.support.ui.Select;
import org.openqa.selenium.support.ui.WebDriverWait;
import org.testng.annotations.AfterClass;
import org.testng.annotations.BeforeTest;
import org.testng.annotations.Listeners;
import org.testng.annotations.AfterTest;
@Listeners({listener.class})
public class TestNgLogin {
	    WebDriver driver;
		WebDriverWait wait;
		HaveOrNo checkElement = new HaveOrNo();
		
		 @BeforeMethod
		  public void beforeMethod() {
			
			  System.out.println("this is beforeMethod");
		  }
  @BeforeClass
 public void beforeClass() {
			
			  System.setProperty("webdriver.chrome.driver",
						"C:\\Program Files (x86)\\Google\\Chrome\\Application\\chromedriver.exe");
				 driver = new ChromeDriver();
				driver.get("https://www.imooc.com");
				driver.manage().window().maximize();
			  System.out.println("this is beforeClass");
				wait = new WebDriverWait(driver, 3000);
		  }

  @Test
  public void loginAndEdiPosition() throws InterruptedException {
		Assert.fail("假装失败了");

  }
 

  
  @AfterMethod
  public void afterMethod() {
	  System.out.println("this is afterMethod");
  }



  @AfterClass
  public void afterClass() {
	  System.out.println("this is afterClass");
  }

  @BeforeTest
  public void beforeTest() {
	  System.out.println("this is beforeTest");
	
  }

  @AfterTest
  public void afterTest() {
	  System.out.println("this is afterTest");
	 // driver.close();
  }

}

然后执行,可以看到图片

 

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值