`

Selenium 失败截图方法实现浅谈

阅读更多
   因为我用的是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();
            }
        }
    }
方法中的截图和上例几乎一样,只不过把路径改一下就可以了,另外加上了失败的方法名方便我们定位。个人经验之谈,谈不上有多么高深,只是大家能方便自己用就好,方法是死的,人是活的,项目也是活的,大家如果都在摸索阶段,能提供大家一些思路和方法做参考就好。如果是高手了,也希望我抛砖引玉,能把这个话题一直延续下去讨论交流。
分享到:
评论

相关推荐

    [python]利用Selenium实现网页全屏截图+部分截图并web实现

    本教程将深入探讨如何使用Selenium实现网页的全屏截图以及选取特定区域进行截图,并通过Web服务展示这些截图。 首先,我们需要安装Selenium库。在命令行或终端中输入以下命令来安装: ```bash pip install ...

    phpunit+selenium测试环境搭建浅谈

    将`phpunit`与`selenium`结合,可以实现端到端的测试,即测试整个应用程序从输入到输出的流程。这通常被称为集成测试或功能测试。首先,我们需要安装并配置`phpunit`,这通常通过Composer(PHP的依赖管理工具)完成...

    python 实现selenium断言和验证的方法

    ### Python 实现 Selenium 断言和验证的方法 在自动化测试领域,Selenium 是一款非常流行的工具,它能够帮助开发者和测试工程师模拟用户操作浏览器的行为,从而实现自动化测试的目的。Python 作为一门简单易学且...

    python爬虫 使用selenium 实现中英互译

    在这个项目中,我们专注于使用Selenium实现中英互译功能,这对于处理网页上的多语言内容非常有用。 首先,该项目提供了两种版本的翻译器:一个可执行的exe文件和一个Python源代码文件(translater.exe和translater....

    java+selenium实现自动化打开页面的方法

    "java+selenium实现自动化打开页面的方法" 一、什么是Selenium? Selenium是一个自动化测试工具,可以模拟用户的行为来测试Web应用程序。它支持多种编程语言,如Java、Python、Ruby等。Selenium可以模拟浏览器的...

    基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip

    基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip基于Python+Selenium Web自动化实现的东方网期货交易所数据爬取及存储源码.zip基于Python+Selenium Web自动化实现的东方网期货交易所...

    Selenium深入浅出1.0

    ### Selenium深入浅出1.0 知识点详解 #### Selenium概述 Selenium是一个强大的自动化测试框架,主要用于Web应用的功能性测试。它支持多种编程语言(如Java、Python、C#等),并且能够运行在不同的操作系统上。...

    selenium-jsrpc,selenium实现JS的rpc,最近简单的JSRpc,10行代码实现 支持POST,GET

    6. 安装方法:根据描述,实现Selenium实现JS的rpc需要安装Flask和Selenium两个Python库。可以通过pip命令来安装这些库。 安装步骤如下: - 首先,打开命令行工具(例如cmd或终端)。 - 输入pip install Flask命令,...

    用selenium+打码平台实现用户注册.rar

    本教程将深入探讨如何利用Selenium结合打码平台来实现用户注册的自动化过程,从而提高工作效率并解决验证码识别的难题。 首先,我们需要了解Selenium的基本用法。Selenium WebDriver允许我们通过编程方式控制浏览器...

    python上selenium的弹框操作实现

    selenium之弹框操作 1,分类 弹框类型自见解分为四种: 1,页面弹框 2,警告提示框(alert) 3,确认消息框(confirm) 4,提示消息对话(prompt) 提示: selenium 提供switch_to_alert()方法定位到 alert/...

    selenium2 Java版 使用方法

    ### Selenium2 Java版 使用方法详解 #### 一、引言 随着互联网技术的快速发展,Web应用变得日益复杂,为了确保产品的质量和用户体验,自动化测试成为了一种趋势和必要手段。Selenium作为一款广受欢迎的自动化测试...

    Selenium深入浅出1.2.pdf

    ### Selenium深入浅出知识点概述 #### 一、Selenium简介及功能特点 - **定义**:Selenium 是一套完整的 Web 测试解决方案,包含了多种工具来满足各种自动化测试需求。 - **功能特点**: - **脚本录制与回放**:...

    selenium selenium selenium selenium selenium selenium selenium selenium

    selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium selenium

    selenium的python实现

    **Selenium Python 实现详解** Selenium 是一个广泛使用的开源自动化测试框架,它允许开发者编写脚本来模拟用户在Web浏览器中的交互行为。Selenium 支持多种编程语言,包括Python,使得测试脚本的编写变得简洁易懂...

    Selenium常用方法

    以下是一些Selenium常用的方法,这些方法对于网页自动化测试至关重要。 1. **文本框 (Text Box)** - `type(locator, value)`: 这个方法用于在指定的文本框内输入文本。例如,`selenium.type("salutationText", ...

    selenium安装方法及注意事项

    "Selenium安装方法及注意事项" Selenium是一款自动化测试工具,能够模拟用户交互来测试Web应用程序。下面是Selenium安装方法及注意事项的详细介绍: Selenium安装方法 1.下载Selenium Java 版本的安装文件,例如`...

    Java selenium截图操作的实现

    Java selenium截图操作的实现 Java selenium截图操作的实现是指通过Java语言使用Selenium工具来实现网页截图的操作。Selenium是一个自动化测试工具,能够模拟用户的操作来实现网页的自动化测试和爬虫抓取。截图操作...

    Selenium深入浅出.pdf

    ### Selenium 深入浅出知识点解析 #### 一、Selenium—Web界面测试工具概述 Selenium 是一款流行的开源工具,主要用于Web应用的自动化测试。它可以模拟真实用户的行为,从而帮助开发者验证Web应用程序的功能是否...

    Selenium

    ### Selenium 知识点详解 #### 一、Selenium 概述 Selenium 是一个用于自动化 Web 应用程序测试的...通过本文的介绍,希望能够帮助大家更好地理解 Selenium 的基本原理及使用方法,进一步提升软件测试的质量和效率。

Global site tag (gtag.js) - Google Analytics