监听主要是针对注解了@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();
}
}
然后执行,可以看到图片