因为我用的是selenium webdriver+Eclipse+TestNG的解决方案,之前也在网上看到过很多关于失败截图的方法。不知道在哪看过一篇文章,说一个Tester的截图就应该像诗人能“吟的一首好诗”一样“截的一手好图”,

而我看到的方法大多是基于Webdriver Exception,和调用EventListener相结合。下面我简单就我的经验将截图方法分类总结一下:
在说正题之前,先给出一个比较通用的常用截图方法,这个用过selenium的人就不用我多说了吧。基本上各种教程,例程给出的方法都大抵相同。而我们要实现的各种失败的方法也源于此,后续再谈。
public static void screenShot(WebDriver driver, String desc) {
Date currentTime = new Date();
SimpleDateFormat formatter = new SimpleDateFormat("yyyy-MM-dd-hh-mm-ss");
String dateString = formatter.format(currentTime);
File scrFile = ((TakesScreenshot) driver)
.getScreenshotAs(OutputType.FILE);
try {
desc = desc.trim().equals("") ? "" : "-" + desc.trim();
File screenshot = new File("screenshot" + File.separator
+ dateString + desc + ".png");
FileUtils.copyFile(scrFile, screenshot);
} catch (IOException e) {
e.printStackTrace();
}
}
其实我们完全可以利用此方法,定制出我们想要的截图方法去方便程序调用,比如:
public void getScreenshot(WebDriver driver)
{
Date date1=new Date();
String h=String.format("%tH", date1);
String m=String.format("%tM", date1);
String s=String.format("%tS", date1);
String d=String.format("%tF", date1);
String PathOfSnapshot = "E:/JAVA testing/";
String SnapshotName = d+"_"+h+m+s + ".png";
PathOfSnapshot = PathOfSnapshot + SnapshotName;
//Selenium.CaptureScreenshot(PathOfError);
File screenShotFile = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
try
{
FileUtils.copyFile(screenShotFile, new File(PathOfSnapshot));
}
catch (IOException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
}
这样就可以定制一个文件名为日期-时间的截图方法,截图后也可以方便我们到log查找,定位问题
Ok,接下来重点来了,我们需要在失败为判断节点的情况下,调用此方法,这样就需要用ITsetResult这个Testng的接口了,具体方法如下:
@AfterMethod
public void afterMethod(ITestResult result, Method method) {
afterInvocation(result, method);
driver.close();
}
然后我们定义afterInvocation方法:
public void afterInvocation(ITestResult result, Method method)
{
if (!result.isSuccess()) {
File f = ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
Date date1=new Date();
String h=String.format("%tH", date1);
String m=String.format("%tM", date1);
String s=String.format("%tS", date1);
String d=String.format("%tF", date1);
String PathOfSnapshot = "E:/JAVA testing/FailCases/";
String SnapshotName = d+"_"+h+m+s + ".png";
PathOfSnapshot = PathOfSnapshot + SnapshotName;
try {
FileUtils.copyFile(f, new File(PathOfSnapshot));
System.out.println("This is a fail test case"+ method.getName());
}
catch (IOException e) {
e.printStackTrace();
}
}
}
方法中的截图和上例几乎一样,只不过把路径改一下就可以了,另外加上了失败的方法名方便我们定位。个人经验之谈,谈不上有多么高深,只是大家能方便自己用就好,方法是死的,人是活的,项目也是活的,大家如果都在摸索阶段,能提供大家一些思路和方法做参考就好。如果是高手了,也希望我抛砖引玉,能把这个话题一直延续下去讨论交流。
分享到:
相关推荐
本教程将深入探讨如何使用Selenium实现网页的全屏截图以及选取特定区域进行截图,并通过Web服务展示这些截图。 首先,我们需要安装Selenium库。在命令行或终端中输入以下命令来安装: ```bash pip install ...
将`phpunit`与`selenium`结合,可以实现端到端的测试,即测试整个应用程序从输入到输出的流程。这通常被称为集成测试或功能测试。首先,我们需要安装并配置`phpunit`,这通常通过Composer(PHP的依赖管理工具)完成...
### Python 实现 Selenium 断言和验证的方法 在自动化测试领域,Selenium 是一款非常流行的工具,它能够帮助开发者和测试工程师模拟用户操作浏览器的行为,从而实现自动化测试的目的。Python 作为一门简单易学且...
在这个项目中,我们专注于使用Selenium实现中英互译功能,这对于处理网页上的多语言内容非常有用。 首先,该项目提供了两种版本的翻译器:一个可执行的exe文件和一个Python源代码文件(translater.exe和translater....
"java+selenium实现自动化打开页面的方法" 一、什么是Selenium? Selenium是一个自动化测试工具,可以模拟用户的行为来测试Web应用程序。它支持多种编程语言,如Java、Python、Ruby等。Selenium可以模拟浏览器的...
基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip基于Python+Selenium Web自动化实现的东方网期货交易所...
### Selenium深入浅出1.0 知识点详解 #### Selenium概述 Selenium是一个强大的自动化测试框架,主要用于Web应用的功能性测试。它支持多种编程语言(如Java、Python、C#等),并且能够运行在不同的操作系统上。...
6. 安装方法:根据描述,实现Selenium实现JS的rpc需要安装Flask和Selenium两个Python库。可以通过pip命令来安装这些库。 安装步骤如下: - 首先,打开命令行工具(例如cmd或终端)。 - 输入pip install Flask命令,...
本教程将深入探讨如何利用Selenium结合打码平台来实现用户注册的自动化过程,从而提高工作效率并解决验证码识别的难题。 首先,我们需要了解Selenium的基本用法。Selenium WebDriver允许我们通过编程方式控制浏览器...
selenium之弹框操作 1,分类 弹框类型自见解分为四种: 1,页面弹框 2,警告提示框(alert) 3,确认消息框(confirm) 4,提示消息对话(prompt) 提示: selenium 提供switch_to_alert()方法定位到 alert/...
### Selenium2 Java版 使用方法详解 #### 一、引言 随着互联网技术的快速发展,Web应用变得日益复杂,为了确保产品的质量和用户体验,自动化测试成为了一种趋势和必要手段。Selenium作为一款广受欢迎的自动化测试...
### Selenium深入浅出知识点概述 #### 一、Selenium简介及功能特点 - **定义**:Selenium 是一套完整的 Web 测试解决方案,包含了多种工具来满足各种自动化测试需求。 - **功能特点**: - **脚本录制与回放**:...
selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium
**Selenium Python 实现详解** Selenium 是一个广泛使用的开源自动化测试框架,它允许开发者编写脚本来模拟用户在Web浏览器中的交互行为。Selenium 支持多种编程语言,包括Python,使得测试脚本的编写变得简洁易懂...
以下是一些Selenium常用的方法,这些方法对于网页自动化测试至关重要。 1. **文本框 (Text Box)** - `type(locator, value)`: 这个方法用于在指定的文本框内输入文本。例如,`selenium.type("salutationText", ...
"Selenium安装方法及注意事项" Selenium是一款自动化测试工具,能够模拟用户交互来测试Web应用程序。下面是Selenium安装方法及注意事项的详细介绍: Selenium安装方法 1.下载Selenium Java 版本的安装文件,例如`...
Java selenium截图操作的实现 Java selenium截图操作的实现是指通过Java语言使用Selenium工具来实现网页截图的操作。Selenium是一个自动化测试工具,能够模拟用户的操作来实现网页的自动化测试和爬虫抓取。截图操作...
### Selenium 深入浅出知识点解析 #### 一、Selenium—Web界面测试工具概述 Selenium 是一款流行的开源工具,主要用于Web应用的自动化测试。它可以模拟真实用户的行为,从而帮助开发者验证Web应用程序的功能是否...
### Selenium 知识点详解 #### 一、Selenium 概述 Selenium 是一个用于自动化 Web 应用程序测试的...通过本文的介绍,希望能够帮助大家更好地理解 Selenium 的基本原理及使用方法,进一步提升软件测试的质量和效率。