11.1 截图函数的正常使用

11.1.1 截图方法

无论是在手动测试还是自动化测试中场景复现永远是一个很重要的事情,有时候一些问题可能很难复现,这个都需要测试人员对bug有很高的敏感度,在一般的情况下有一个很好的测试习惯也很重要,发现bug马上截图,不要管那么多。下面我们看一下自动化测试截图的一些方法:

1、save_screenshot(). 这个方法的用户最直接driver.save_screenshot('test.png'),他直接是获取当前屏幕的截图,然后进行保存,可能会有人有疑问,这个不能指定目录吗?当然可以,只是你需要使用另外一个截图方法,如下

2、get_screenshot_as_file(filename) 用法和上面的有一些差别,这个需要指定文件夹driver.get_screenshot_as_file('png/test.png')。

截图方法常用的是这两个,其他的使用很少,这里不做讲解,如果有兴趣的可以去了解一下一个是以二进制,一个是以base64的形式获取。

11.2 以时间戳命名错误图片

11.2.1 时间戳命名图片

可能看到这里的人会觉得不懂,为什么我们需要用时间戳来命名,其实这个并不是我们的最终目的,这里是在给大家传递一个思想,你想想在自动化测试中你每个方法都有可能错误,而且每次运行都是在不同的地方出错,那么你这个命名如果按照上面的写死,那么永远只有一张图片,其他的图片找不到了,这个不符合我们设计时的思考,所以我们需要用不同的方式去,显然时间戳是一个不错的选择,只要出错,我们就截图,而且还能保证每张图的名字不一样,是不是感觉很nb,哈哈,开玩笑。

既然是以时间戳来进行命名,那么首先我们需要有一个获取时间戳的方法,要把它封装好,因为调用这个的地方会很多,所以要进行封装。

import time
def getTime(self):
tamp = int(time.time())
return tamp

  上面的方法便是我们封装的获取时间戳的方法,我这里使用了一个返回函数,每次当我们调用的时候我们就能够获取到当前的时间戳。接下来看一下在实际中我们如何将时间戳使用到截图方法中:

import time
#获取时间戳,并当作图片名字
def getTime(self):
tamp = int(time.time())
filename = '../jpg/ %s.png' %tamp
self.driver.get_screenshot_as_file(filename)

  看见上面的代码是不是很简单啊,但是不知道你们思考过一个问题没,是不是怎么看怎么觉得别扭啊?接着往下看。

11.3 截图功能的封装

11.3.1 截图功能封装实战

上面的代码越来越别扭,哈哈,我也是那么觉得的,下面看一下截图功能在实际中的封装,其实和上面差不多,只是需要养成一个习惯,尽可能的将同一类功能封装到一个方法中,so,如下:

import time
#截图
def getScreenShot(self):
time = self.getTime()
filename = '../jpg/ %s.png' %time
self.driver.get_screenshot_as_file(filename) #获取时间戳
def getTime(self):
tamp = int(time.time())
return tamp

  

看到这个是不是稍微好一点点呢?其实这个呢只能算是入门的,那么在实际项目中我们到底是怎么进行的呢?大家下去思考一下。

  我看着上面的代码模糊,总感觉这个driver哪里来的呢?是不是又忘记了呢?还记得我们return driver了么?

提示:在实际项目中我们的截图封装一般会和我们当前的case有关系,基本是按照case执行的来进行命名,那样在图片页面就能够一目了然的指导这个图片是哪个地方出错的。去动手尝试一下吧。

Appium python自动化测试系列之自动化截图(十一)的更多相关文章

  1. Appium python自动化测试系列之混合app实战(十一)

    12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native ...

  2. Appium python自动化测试系列之移动自动化测试前提(一)

    1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...

  3. Appium python自动化测试系列之appium环境搭建(二)

    ​2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...

  4. Appium python自动化测试系列之元素的定位(六)

    ​6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...

  5. Appium python自动化测试系列之Capability介绍(五)

    ​5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...

  6. Appium python自动化测试系列之认识Appium(四)

    ​4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...

  7. Appium python自动化测试系列之等待函数如何进行实战(九)

    ​9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...

  8. Appium python自动化测试系列之使用HTMLTestRunner生成测试报告(十三)

    ​13.1 测试报告概述 13.1.1 测试报告的定义 在前面章节我们已经讲了自动化基础的很多东西,如果说掌握了,而且自己动手去练习了,我相信在一些初级的面试中是没任何问题的,今天我们接触的应该算是一 ...

  9. Appium python自动化测试系列之Android知识讲解(三)

    ​3.1 ADB工具讲解 3.1.1 什么是ADB呢? 我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...

随机推荐

  1. Spring @RequestParam乱码问题

    在网上找了很多资料才找到解决的方法,通过URL传递命名参数,后台接收的却是乱码解决方法如下: 方法一:将接收的参数重新编码 @RequestMapping(value="/handle&qu ...

  2. 绘制QQ圆形图像

    思路:这里用到的是图像求交.现在画布上画上圆形,即所需要的圆形头像,然后设置paint的属性设置为求交集,再将bitmap划到canvas上面就好了. 代码如下: private static Bit ...

  3. Java平台与.Net平台在服务器端前景预测

    如果是服务器端, 毫无疑问C#是很难跟Java拼的. 就算将来,微软逆袭的机会也很渺茫了.就技术的先进性来说, Java平台是不如.Net平台, 但是, 程序员对于两个平台,直接接触的基本以语言为主, ...

  4. C++11获取线程的返回值

    C++11 std::future and std::promise 在许多时候,我们会有这样的需求--即我们想要得到线程返回的值. 但是在C++11 多线程中我们注意到,std::thread对象会 ...

  5. 深入理解计算机系统chapter6

    1. 2. 3. 存储器山

  6. 关于MySQL 事务,视图,索引,数据库备份,恢复

      /*创建数据库*/ CREATE DATABASE `mybank`;/*创建表*/USE mybank;CREATE TABLE `bank`(    `customerName` CHAR(1 ...

  7. 用ES6巧妙的解决传统面试中的算法小问题!

    最近自己也在准备面试,在复习算法的时候,机智的用了一波ES6.一起来瞧瞧吧! 1.数组的去重 var arr=str.split(''); for(var i=0;i<arr.length-1; ...

  8. P1034

    问题 E: P1034 时间限制: 1 Sec  内存限制: 128 MB提交: 29  解决: 22[提交][状态][讨论版] 题目描述 尼克每天上班之前都连接上英特网,接收他的上司发来的邮件,这些 ...

  9. SQLserver2008r2安装过程

    首先,下载SQLserver2008的安装包,下载完成打开是以下界面 点击开始安装,随着安装进程,点下一步 . 接着来到设置角色的过程,点击SQL功能安装 然后按下一步,来到功能选择,点击" ...

  10. C#无限分级实现,前端WEB页面接收,后台提供层级Json数据

    using System; using System.Collections.Generic; using System.Linq; using System.Web; using System.Te ...