Appium python自动化测试系列之自动化截图(十一)
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自动化测试系列之自动化截图(十一)的更多相关文章
- Appium python自动化测试系列之混合app实战(十一)
12.1 什么是混合App 12.1.1 混合app定义 什么是混合app,其实这个不言而喻,我们的app正常来说应该都是native的,但是实际工作中却不是,反正种种原因我们的app会有native ...
- Appium python自动化测试系列之移动自动化测试前提(一)
1.1 移动自动化测试现状 因为软件行业越来越发达,用户的接受度也在不断提高,所以对软件质量的要求也随之提高,当然这个也要分行业,但这个还是包含了大部分.因为成本.质量的变化现在对自动化测试的重视度越 ...
- Appium python自动化测试系列之appium环境搭建(二)
2.1 基础环境搭建 当我们学习新的一项技术开始基本都是从环境搭建开始,本书除了第一章节也是的,如果你连最基础的环境都没有那么我们也没必要去说太多,大概介绍一下: 1.因为appium是支持andr ...
- Appium python自动化测试系列之元素的定位(六)
6.1 常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个 ...
- Appium python自动化测试系列之Capability介绍(五)
5.1 Capability介绍 5.1.1 什么是Capability 在讲capability之前大家是否还记得在讲log时给大家看过的启动时的日志?在我们的整个启动日志中会出现一些配置信息,其 ...
- Appium python自动化测试系列之认识Appium(四)
4.1界面认识 在之前安装appium的时候说过我们有两种方法安装,也就有两种结果,一种是有界面的,一种是没有界面的,首先我们先讲一下有界面的,以及界面有哪些东西. 首先看第一幅图,如果你的是win ...
- Appium python自动化测试系列之等待函数如何进行实战(九)
9.1 等待函数的使用 9.1.1 为什么要使用等待函数 我们在做自动化的时候很多时候都不是很顺利,不是因为app的问题,我们的脚本也没问题,但是很多时候都会报错,比如一个页面本来就有id为1的这个 ...
- Appium python自动化测试系列之使用HTMLTestRunner生成测试报告(十三)
13.1 测试报告概述 13.1.1 测试报告的定义 在前面章节我们已经讲了自动化基础的很多东西,如果说掌握了,而且自己动手去练习了,我相信在一些初级的面试中是没任何问题的,今天我们接触的应该算是一 ...
- Appium python自动化测试系列之Android知识讲解(三)
3.1 ADB工具讲解 3.1.1 什么是ADB呢? 我们不去解释官方语言的翻译,给大家说一个通熟易懂的说法,ADB我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...
随机推荐
- 从JS和jQuery浅谈DOM操作,当我们在获取时,究竟获取了什么
0.写在前面的话 自己对前端的东西一直不是很熟,现在开始要想办法从前端各个地方去获取想要的属性值的时候,也基本是在网上现炒现卖,几周下来,发现自己还是迷迷糊糊,可以算是一无所获. 所以就抽时间,把这一 ...
- 《Head First 设计模式》读书笔记(1) - 策略模式
<Head First 设计模式>(点击查看详情) 1.写在前面的话 之前在列书单的时候,看网友对于设计模式的推荐里说,设计模式的书类别都大同小异,于是自己就选择了Head First系列 ...
- ExtJS4为form表单必填项添加红色*标识
通常情况下,ExtJS4的form表单必填项在输入状态下会有特殊提示,非输入状态下,显示却和其他项没有任何区别.为使必填项更加容易区分,我们需要根据allowBlank的属性值,为form表单中的必填 ...
- NopCommerce添加事务机制
NopCommerce现在最新版是3.9,不过依然没有事务机制.作为一个商城,我觉得事务也还是很有必要的.以下事务代码以3.9版本作为参考: 首先,IDbContext接口继承IDisposable接 ...
- adobe acrobat pro 9破解方法
方法一:(经常没用,不推荐) 尝试一下部分常见序列号: 网上搜 方法二: (能找到文件的,推荐) 1.到 C:\Program Files\Common Files\Adobe\Adobe PCD\c ...
- css之outline实现圆角效果
对,你没有看错,outline也可以实现圆角,不过请先读完自然会知道结果: ============================================================== ...
- AF_INET
AF_INET(又称PF_INET)是 IPv4 网络协议的套接字类型,AF_INET6 则是 IPv6 的:而AF_UNIX 则是Unix系统本地通信. 选择AF_INET 的目的就是使用IPv4 ...
- Milk Patterns poj3261(后缀数组)
Milk Patterns Time Limit: 5000MS Memory Limit: 65536K Total Submissions: 9274 Accepted: 4173 Cas ...
- poj2337欧拉回路要求输出路径
Catenyms Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 8368 Ac ...
- Ubuntu访问window下的磁盘分区出现“Error mounting /dev/sda5 at/media”错误的解决方法
我装ubuntu之前,电脑上安装了windows 10,为了装ubuntu,在window 10下的磁盘工具分配了30G的磁盘空间.安装完Ubuntu之后,访问window 10的磁盘分区出现“Err ...