一,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)-截图方法的更多相关文章

  1. Python+Appium自动化测试(6)-元素等待方法与重新封装元素定位方法

    在appium自动化测试脚本运行的过程中,因为网络不稳定.测试机或模拟器卡顿等原因,有时候会出现页面元素加载超时元素定位失败的情况,但实际这又不是bug,只是元素加载较慢,这个时候我们就会使用元素等待 ...

  2. Python+Appium自动化测试(15)-使用Android模拟器(详细)

    做APP的UI自动化测试时,我们往往会使用真机跑自动化测试脚本,因为这样才是最真实的使用场景.但前期调试脚本的话,可以先使用模拟器,这样相对更加方便. 不推荐使用Android SDK里自带模拟器,太 ...

  3. Python+Appium自动化测试(14)-yaml配置Desired capabilities

    一,前言 在之前的appium自动化测试示例中,我们都是把构造driver实例对象的数据(即Desired Capabilities)写在业务代码里,如下: # -*- coding:utf-8 -* ...

  4. Python+Appium自动化测试(1)-appium环境搭建

    用python+appium做appUI自动化测试,系统为Windows.首先是JDK与Android SDK的安装与环境变量的设置. 一,安装JDK,配置JDK环境变量 1,下载jdk jdk8官网 ...

  5. Python+Appium自动化测试(13)-toast定位

    一,前言 在app自动化测试的过程中经常会遇到需要对toast进行定位,最常见的就是定位toast或者获取toast的文案进行断言,如下图,通过定位"登录成功"的toast就可以断 ...

  6. python+appium自动化测试(一)-----环境搭建

    基础背景: windows7系统 +python3.4版本 环境搭建目标: 使用python编写app自动化测试脚本并成功执行. 搭建步骤:   1.安装python3,安装步骤详见:https:// ...

  7. Python+Appium自动化测试(9)-自动选择USB用于传输文件(不依赖appium对手机页面元素进行定位)

    一,问题 app自动化测试使用Android真机连接电脑时,通常会遇到两种情况: 1.测试机连接电脑会弹窗提示USB选项,选择USB用于"传输文件",有些手机不支持设置默认USB选 ...

  8. Python+Appium自动化测试(12)-通过坐标定位元素

    在使用appium做app自动化测试的过程中,可能会遇到元素的属性值不是唯一的情况,导致不能通过find_element_bi_xx()方法定位元素,这个时候我们就可以通过坐标来定位元素. 1,通过绝 ...

  9. Python+Appium自动化测试(2)-appium连接真机启动app

    app自动化测试的第一步,是启动被测app.appium环境搭建好后,我们就可以连接真机启动app了.环境为windows,Appium1.18.0,Android手机,被测app为今日头条app,让 ...

随机推荐

  1. 区块链Fabric 交易流程

    1. 提交交易预案 1)应用端首先构建交易的预案,预案的作用是调用通道中的链码来读取或者写入账本的数据.应用端使用 Fabric 的 SDK 打包交易预案,并使用用户的私钥对预案进行签名. 应用打包完 ...

  2. 阿里云前端路线 | CSS快速掌握

    1.1什么是CSS 翻译为“层叠样式表”或者“级联样式表”, 简称样式表. 1.2CSS的主要作用 它主要是用来给HTML网页来设置外观或者样式 外观或者样式:HTML网页中的文字的大小.颜色.字体, ...

  3. jmeter做简单的压测

    一.JMeter概述jmeter除了可以做借口测试外,还可以做压力测试:首先介绍jmeter中各个组件在压力测试中扮演的角色 1)线程(Threads(Users))即虚拟用户,线程组里可设置需要模拟 ...

  4. Httprunner框架学习

    前言 HttpRunner 是一款面向 HTTP(S) 协议的通用测试框架,只需编写维护一份 YAML/JSON 脚本,即可实现自动化测试. 官方文档:https://docs.httprunner. ...

  5. 调整JavaScript抽象的迭代方案

    原文链接:Adapting JavaScript Abstractions Over Time 译者:小溪里 校对者:郭华翔.苗冬青 即使还没有读过我的文章<在处理网络数据的 JavaScrip ...

  6. python 3 continue 循环控制

  7. ulimit 的认识

    原文出自 通过 ulimit 改善系统性能 概述 系统性能一直是一个受关注的话题,如何通过最简单的设置来实现最有效的性能调优,如何在有限资源的条件下保证程序的运作,ulimit 是我们在处理这些问题时 ...

  8. Scala的lazy应用

    如果将一个变量声明为lazy,则只有在第一次使用该变量时,变量对应的表达式才会起作用. 例如:对于特别耗时的的计算操作特别有用,如打开文件IO,网络IO等. import scala.io.Sourc ...

  9. 对JavaScript的复习(一)

    *javascript基础复习 1.function对象 创建 var 方法名=Function(形式参数列表){ 方法体 } 调用 方法名(实际参数列表) 2.Array对象 创建 * var ar ...

  10. Linux实战(2):Linux传输文件

    此次使用的是scp命令,只是针对文件或者文件的传输,并没有什么高端的使用,主要是怕自己忘记了记一下. 传输文件,命令说明:scp+文件路径针确到文件名+账号+上传到另一台的路径并另存为文件名 scp ...