Python+Appium自动化测试(7)-截图方法
一,selenium模块的两种截图方法
- get_screenshot_as_file(filename)
参数filename为截图文件保存的绝对路径,如:driver.get_screenshot_as_file(r'E:/test_project/screenshot/test_01.png')
- save_screenshot(filename)
该方法与get_screenshot_as_file()不同的是,参数为文件名称,保存当前屏幕截图到当前脚本所在的文件,如:driver.save_screenshot('test_02.png')
上面两种方法使用举例,代码如下:
# -*- coding:utf-8 -*-
# @author: 给你一页白纸
import time
from appium import webdriver
def android_driver():
desired_caps = {
"platformName": "Android",
"platformVersion": "10",
"deviceName": "PCT_AL10",
"appPackage": "com.ss.android.article.news",
"appActivity": ".activity.MainActivity",
"automationName": "uiautomator2",
"unicodeKeyboard": True,
"resetKeyboard": True,
}
# 启动今日头条app
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
driver.implicitly_wait(8)
return driver
def login_opera(driver):
'''登录今日头条操作'''
try:
driver.find_element_by_id("com.ss.android.article.news:id/ciy").click() # 点击【我知道了】
driver.find_element_by_id("android:id/button1").click() # 点击权限管理-确定按钮
driver.find_element_by_xpath("//android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 点击未登录
driver.find_element_by_id("com.ss.android.article.news:id/a1c").click() # 未登录页点击登录按钮
driver.find_element_by_id("com.ss.android.article.news:id/bfm").click() # 登录页点击“。。。”
driver.find_element_by_xpath("//android.widget.LinearLayout[@index=4]").click() # 选择密码登录
driver.find_element_by_id("com.ss.android.article.news:id/c7").send_keys("xxxxxxxx") # 输入账号
driver.find_element_by_id("com.ss.android.article.news:id/ch").send_keys("xxxxxxxx") # 输入密码
driver.find_element_by_id("com.ss.android.article.news:id/a31").click() # 点击登录
except Exception as e:
print("登录错误,原因是:{}".format(e))
# 报错时截图
driver.get_screenshot_as_file(r'E:\blog\blog_script\images\test_login_error_01.png')
driver.save_screenshot('test_login_error_02.png')
if __name__ == '__main__':
driver = android_driver()
login_opera(driver)
二, snapshot(*args, **kwargs)
这是Airtest框架里面提供的api,使用前需要安装airtest库,并导入。官方文档参数说明如下:
filename – 保存截图的文件名,默认保存路径为 ST.LOG_DIR
中
msg – 截图文件的简短描述,将会被显示在报告页面中
quality – The image quality, integer in range [1, 99]
fiename指定保存截图的绝对路径,msg与quality可为空
# 安装airtest
pip install -U airtest
# 导入并使用
from airtest.core.api import *
snapshot(filename='E:\images\screenshot_01.png', message="首页截图")
三,使用adb截图
首先,进行截图,命令如下
adb shell screencap -p +手机上图片保存路径,如:adb shell screencap -p /sdcard/image.png
然后,将截图pull到电脑上,命令如下:
adb pull +手机图片路径 +保存到电脑的路径,如:
adb pull /sdcard/image.png C:\Users\xiaoqq\Desktop\test_project
此时我们在电脑相应的目录里就能找到该图片。
用appium做appUI自动化测试就使用一中的方法,使用Airtest或Poco做appUI自动化的测试就使用第二种方法。不推荐使用adb截图,速度较慢!
Python+Appium自动化测试(7)-截图方法的更多相关文章
- Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法
在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...
- Python+Appium自动化测试(15)-使用Android模拟器(详细)
做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太 ...
- Python+Appium自动化测试(14)-yaml配置Desired capabilities
一,前言 在之前的appium自动化测试示例中,我们都是把构造driver实例对象的数据(即Desired Capabilities)写在业务代码里,如下: # -*- coding:utf-8 -* ...
- Python+Appium自动化测试(1)-appium环境搭建
用python+appium做appUI自动化测试,系统为Windows.首先是JDK与Android SDK的安装与环境变量的设置. 一,安装JDK,配置JDK环境变量 1,下载jdk jdk8官网 ...
- Python+Appium自动化测试(13)-toast定位
一,前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位toast或者获取toast的文案进行断言,如下图,通过定位"登录成功"的toast就可以断 ...
- python+appium自动化测试(一)-----环境搭建
基础背景: windows7系统 +python3.4版本 环境搭建目标: 使用python编写app自动化测试脚本并成功执行. 搭建步骤: 1.安装python3,安装步骤详见:https:// ...
- Python+Appium自动化测试(9)-自动选择USB用于传输文件(不依赖appium对手机页面元素进行定位)
一,问题 app自动化测试使用Android真机连接电脑时,通常会遇到两种情况: 1.测试机连接电脑会弹窗提示USB选项,选择USB用于"传输文件",有些手机不支持设置默认USB选 ...
- Python+Appium自动化测试(12)-通过坐标定位元素
在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝 ...
- Python+Appium自动化测试(2)-appium连接真机启动app
app自动化测试的第一步,是启动被测app.appium环境搭建好后,我们就可以连接真机启动app了.环境为windows,Appium1.18.0,Android手机,被测app为今日头条app,让 ...
随机推荐
- 【IDEA】【SpringBoot】基于idea对springboot程序远程调试
一.开启远程调试前提:本地代码与服务器代码一致(实测:不关键的代码稍微有点不一样好像也不会有多大问题). 二.开启远程调试步骤 1.开发工具配置 idea端打开Edit configurations, ...
- 官网安装Python包太慢?教你三种下载安装方式-PiP、conda、轮子,教你三种Pytorch的下载安装方式,保证你再也不用出现Error
上一期我们介绍了CUDA下载安装以及其总结,这一期教大家如何在Anaconda中使用CUDA来进行加速.神经网络依赖cuDNN的下载安装,以及下载和安装Pytorch-GPU安装包的三种方式(cond ...
- 返回boolean的mybatis查询
注意:返回数量为0时函数返回值为false,返回数量为非零值时为true. Java函数: boolean hasSameServiceCode(@Param("oldDepotCd&quo ...
- MyBatis源码骨架分析
源码包分析 MyBatis 源码下载地址:https://github.com/MyBatis/MyBatis-3 MyBatis源码导入过程: 下载MyBatis的源码 检查maven的版本,必须是 ...
- 添加到web.config文件里的用户自定义翻页控件
<pages> <controls> <add tagPrefix="ucl" tagName="Pager_Backstage" ...
- 【吴恩达课程使用】anaconda (python 3.7) win10安装 tensorflow 1.8 cpu版
[吴恩达课程使用]anaconda (python 3.7) win10安装 tensorflow 1.8 目前tensorflow是只支持到python3.6的,anaconda最新版本已经到pyt ...
- 第9课 - const 和 volatile分析
第9课 - const和volatile分析 1. const只读变量 (1)const修饰的变量是只读的,本质上还是变量,并不是真正意义上的常量 ※※ const只是告诉编译器该变量 ...
- 分布式文件系统之FastDFS安装部署
前面我们了解了分布式文件系统mogilefs的框架以及安装部署和简单使用,回顾请参考https://www.cnblogs.com/qiuhom-1874/tag/MogileFS/:今天我们来了解下 ...
- 认证授权:IdentityServer4 - 单点登录
前言 上一篇文章介绍了IdentityServer4的各种授权模式,本篇继续介绍使用IdentityServer4实现单点登录效果. 单点登录(SSO) SSO( Single Sign-On ),中 ...
- Apache Flink on K8s:四种运行模式,我该选择哪种?
1. 前言 Apache Flink 是一个分布式流处理引擎,它提供了丰富且易用的API来处理有状态的流处理应用,并且在支持容错的前提下,高效.大规模的运行此类应用.通过支持事件时间(event-ti ...