selenium2入门 断言失败自动截图 (四)

一般web应用程序出错过后,会抛出异常。这个时候能截个图下来,当然是极好的。

selenium自带了截图功能。

            //获取截图file
            File scrFile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
            //将图片移动到指定位置
            FileUtils.moveFile(scrFile, new File(newFilePath));

当然在截图之前 需要判断新路径是否合法。下面贴出整体的代码。

package common;
import java.io.File;
import java.io.IOException;
import java.text.SimpleDateFormat;
import java.util.Date;
import org.apache.commons.io.FileUtils;
import org.openqa.selenium.OutputType;
import org.openqa.selenium.TakesScreenshot;
import org.openqa.selenium.WebDriver;
public class ScreenShot {
    public WebDriver driver;
    public ScreenShot(WebDriver _driver){
        driver=_driver;
    }
    private void takeScreenshot(String screenPath){
        try {
            //获取截图file
            File scrFile= ((TakesScreenshot)driver).getScreenshotAs(OutputType.FILE);
            //将图片移动到指定位置
            FileUtils.moveFile(scrFile, new File(screenPath));
        }  catch (IOException e) {
            e.printStackTrace();
        }
    }
    public void takeScreenshot(){
        SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd(hh_mm_ss)SSS");
        String fileName=dateFormat.format( new Date());
        //创建新的文件名
        String screenName=fileName+".jpg";
        //创建文件夹
        File dir = new File("test-output/snapshot");
        if (!dir.exists()){
            dir.mkdirs();
        }
        //获取新文件名的绝对路径
        String screenPath= dir.getAbsolutePath()+"/"+screenName;
        //截图
        this.takeScreenshot(screenPath);
    }
}

调用

ScreenShot ss = new ScreenShot(Driver);
时间: 2024-08-27 10:32:26

selenium2入门 断言失败自动截图 (四)的相关文章

Selenium2+python自动化67-用例失败自动截图【转载】

前言: 装饰器其实就是一个以函数作为参数并返回一个替换函数的可执行函数 上一篇讲到用装饰器解决异常后自动截图,不过并没有与unittest结合,这篇把截图的装饰器改良了下,可以实现用例执行失败自动截图. 一.不带变量的装饰器 1.参考资料:http://www.artima.com/weblogs/viewpost.jsp?thread=240845,这里这篇讲的很好,可以看下原文 2.这个是不带变量的装饰器__init__里是初始化参数,__call__里面是原函数参数 Decorators

Python Unittest框架用例执行失败自动截图

原生的unittest框架是不支持case失败后自动截图功能,网上的解决办法,大体上分为两种: 1.加装饰器 可参考让unittest框架在fail时自动截图的装饰器.给测试用例添加多个装饰器的问题 (python unittest.TestCase) 2.封装断言 可参考Getting Python's unittest results in a tearDown() method.python 自动化测试,求助:如何判断用例断言失败后自动截图 原文地址:https://www.cnblogs

基于页面元素定位的操作失败自动截图

web自动化脚本运行失败,很大一部分问题出在元素定位上,博主在这里介绍一个循环定位及失败截图的方法.以方便脚本维护,定位问题. 1.以下代码是WebDriver自带的方法,封装一下,使用即可. 1 /** 2 * 截取屏幕截图并保存到指定路径 3 * 4 * @param filepath 5 * 保存屏幕截图完整文件名称及路径 6 * @return 无 7 */ 8 public void captureScreenshot(String filepath) { 9 File screenS

appium自动化,失败自动截图

1.创建监听器类TestNGListener,重写onTestFailure方法,里面定义了 监听的driver ,截图文件路径和名称 public class TestNGListener extends TestListenerAdapter{ @Override public void onTestFailure(ITestResult tr){ try { super.onTestFailure(tr); //调用屏幕截图方法 captureScreenShot(tr,tr.getMet

python+selenium自动化软件测试:装饰器之用例失败后截图

对于用例失败截图,很多小伙伴都希望用例执行失败的时候能自动截图,想法是很好的,实现起来并不是那么容易,这里小编分享下最近研究装饰器,打算用装饰器来实现自动截图. 一.函数作为形参1.函数的参数也可以是另外一个函数,也就是说传的参数不仅可以是常见的字符串.数字等,也可以是一个函数.2.定义aaa为一个加法函数,bbb为减法函数.3.calculate这个函数传三个参数,第一个参数是一个函数,另外两个参数是函数的两个参数. 二.万能装饰器1.由于不知道我们被调用的函数到底有几个参数,这时候就可以写一

SQL 存储过程入门(事务)(四)

SQL 存储过程入门(事务)(四) 本篇我们来讲一下事务处理技术. 为什么要使用事务呢,事务有什么用呢,举个例子. 假设我们现在有个业务,当做成功某件事情的时候要向2张表中插入数据,A表,B表,我们插入的顺序是先插入A,再插入B表,如果都顺利插入成功了,当然没有问题,如果任意一张表插入失败了,而另一张表插入成功了,插入成功的表就是垃圾数据了.我们要判断,任意一张表插入失败都回滚,就是都不插入,这就是事务的基本使用. 一,sql事务定义 所谓事务是用户定义的一个数据库操作序列,是一个不可分割的工作

利用PhantomJS 自动截图Kibana ,phpmailer发送网站运营日报

如题,先来张最终效果运营日报 下面介绍下实现过程 [前期准备] kibana配置视图,并做好条件过滤视图,这里就是做介绍,可以参考博文, 视图做好后生成一个短链接,这里我们生成的是 http://10.0.0.110:5601/goto/4d641c075d7cbf2c7d70a82b16436769 1.安装配置PhantomJS # yum -y install gcc gcc-c++ make flex bison gperf ruby   openssl-devel freetype-d

App 上线时的自动截图方案

> * 原文链接 : Screenshots Through Automation * 作者 : Flavien Laurent * 译者 : chaossss * 校对者: sundroid * 状态 : 校对完成 在发布 App 到应用商店时有一件的事情不得不做,就是上传最新的高清无码截图到应用商店上.可是如果你的 App 有许多页面,那你每次发布更新都可能是一场梦魇,因为你需要一页一页地去截图.为了解决众多 App 开发者的这个痛点,我将在这篇博文中介绍一个实现自动化截图的方法: 刚到 C

汇编入门学习笔记 (十四)—— 直接定址表

疯狂的暑假学习之  汇编入门学习笔记 (十四)-- 直接定址表 参考: <汇编语言> 王爽 第16章 1. 描述单元长度的标号 普通的标号:a,b assume cs:code code segment a:db 1,2,3,4,5,6,7,8 b:dw 0 start: mov si,offset a mov di,offset b mov ah,0 mov cx,8 s: mov al,cs:[si] add cs:[di],ax inc si loop s mov ax,4c00h in