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我理解为他就是电脑和手机连接的桥梁.此连接不是充电的连接,大家不要混淆,说他是一个 ...
随机推荐
- 浅谈IT技术女转战微电商初体验
今天闲来无事,突然想翻看下之前写的技术博客,很是意外,居然那么多阅读量,于是想想做微商也有一段时间了,决定写写初入微商的初体验. 先自我介绍一下,本人是一名理工女,做IT行业的,这个行业也许有人了解, ...
- 基于CSS UI开源框架汇总
从16年数据统计就有20几款UI框架出现在市面上,至今为止能统计的框架应该有40款左右了.前端框架都是基于HMTL5.CSS.JS开发的,这里主要给大家聊一下CSS UI开源框架有哪些?以后工作中选择 ...
- MySQL的一点浅显知识
本人最近看了一本有关于MySQL的书籍<MySQL必知必会>,书中只写了一些基本知识,但是也基本涵盖了所有的MySQL的知识点.其余的比较高级的也只是在基础上进行扩展或者是优化,看完这本书 ...
- javascript DOM事件总结
1 <html> 2 <title>事件</title> 3 <meta charset="utf-8"/> 4 <body& ...
- 进入css3动画世界(一)
其实我做css3动画也没有多久,这篇文章目标人群是css3动画的新手,不喜勿喷. 分类 目前我接触到的css3动画有2类:一种是transition的,另一种是@keyframes的. 两者的区别就是 ...
- Pycharm中如何加载多个项目?
今天在使用Pycharm工具练习Python时遇到一个疑问:在已存有项目A工程的前提下如何新建另一个项目B,且两者并存? 基本操作步骤: 在File下拉项中选择"New Project&qu ...
- spark与hive的集成
一:介绍 1.在spark编译时支持hive 2.默认的db 当Spark在编译的时候给定了hive的支持参数,但是没有配置和hive的集成,此时默认使用hive自带的元数据管理:Derby数据库. ...
- Ubuntu16.04 install mysql5.X
打开终端: Ctrl+Alt+T 安装ubuntu自带的mysql-server: sudo apt-get install mysql-server 输出Y按回车如下图: 默认安装为root用户,所 ...
- Python实战之实现简单的登陆系统-作业
#!usr/bin/env Python3 # -*-coding:utf-8-*- #编写登陆接口 #输入用户名密码 #认证成功后显示欢迎信息 #输错三次后锁定 __author__="W ...
- Oracle 定时查询数据插入新表中(job+存储过程)
create table EGMAS_COUNT_DATA(TIMES date not null, COUNT NUMBER(30) not null, SYSTEM_NAME VARC ...