Python+Appium自动化测试(7)-截图方法

简介: selenium模块的两种截图方法


一,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
    微信图片_20220424143429.png
  • 然后,将截图pull到电脑上,命令如下:
    adb pull +手机图片路径 +保存到电脑的路径,如:
    adb pull /sdcard/image.png C:\Users\xiaoqq\Desktop\test_project
    微信图片_20220424143436.png
    此时我们在电脑相应的目录里就能找到该图片。


用appium做appUI自动化测试就使用一中的方法,使用Airtest或Poco做appUI自动化的测试就使用第二种方法。不推荐使用adb截图,速度较慢!

相关文章
|
测试技术 Python
Python测试报告生成:整合错误截图,重复用例执行策略,调整测试顺序及多断言机制。
如何组织这一切呢?你可以写一本名为“Python测试之道”的动作指南手册,或者创建一个包含测试策略、测试顺序、多断言机制的脚本库。只要你的测试剧本编写得足够独到,你的框架就会像一位执行任务的超级英雄,将任何潜伏于代码深处的错误无情地揪出来展现在光天化日之下。这些整理好的测试结果,不仅有利于团队协作,更像冒险故事中的精彩篇章,带给读者无尽的探索乐趣和深刻的思考。
330 10
|
Java 测试技术 C#
自动化测试之美:从Selenium到Appium
【10月更文挑战第3天】在软件开发的海洋中,自动化测试如同一艘航船,引领着质量保证的方向。本文将带你领略自动化测试的魅力,从Web端的Selenium到移动端的Appium,我们将一探究竟,看看这些工具如何帮助我们高效地进行软件测试。你将了解到,自动化测试不仅仅是技术的展示,更是一种提升开发效率和产品质量的智慧选择。让我们一起启航,探索自动化测试的世界!
|
Java 测试技术 持续交付
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
本文重点讲解如何搭建App自动化测试框架的思路,而非完整源码。主要内容包括实现目的、框架设计、环境依赖和框架的主要组成部分。适用于初学者,旨在帮助其快速掌握App自动化测试的基本技能。文中详细介绍了从需求分析到技术栈选择,再到具体模块的封装与实现,包括登录、截图、日志、测试报告和邮件服务等。同时提供了运行效果的展示,便于理解和实践。
1389 4
【入门思路】基于Python+Unittest+Appium+Excel+BeautifulReport的App/移动端UI自动化测试框架搭建思路
|
机器学习/深度学习 算法 文件存储
神经架构搜索:自动化设计神经网络的方法
在人工智能(AI)和深度学习(Deep Learning)快速发展的背景下,神经网络架构的设计已成为一个日益复杂而关键的任务。传统上,研究人员和工程师需要通过经验和反复试验来手动设计神经网络,耗费大量时间和计算资源。随着模型规模的不断扩大,这种方法显得愈加低效和不够灵活。为了解决这一挑战,神经架构搜索(Neural Architecture Search,NAS)应运而生,成为自动化设计神经网络的重要工具。
1020 0
|
监控 Devops 持续交付
掌握 GitOps:实现 DevOps 自动化的现代方法
【10月更文挑战第19天】GitOps 是一种基于 Git 仓库管理应用配置和集群状态的现代化 DevOps 方法,通过自动化工具实现声明式配置和持续部署。本文介绍了 GitOps 的核心概念、优势、挑战及实施的最佳实践,帮助团队提高部署效率和系统可靠性。
|
测试技术 Python
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
本文介绍了使用Python的unittest框架来加载测试用例的四种方法,包括通过测试用例类、模块、路径和逐条加载测试用例。
542 0
自动化测试项目学习笔记(三):Unittest加载测试用例的四种方法
|
测试技术 Python
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
本文主要介绍了自动化测试中setup、teardown、断言方法的使用,以及unittest框架中setUp、tearDown、setUpClass和tearDownClass的区别和应用。
597 0
自动化测试项目学习笔记(二):学习各种setup、tearDown、断言方法
|
机器学习/深度学习 物联网 大数据
软件测试的演变与未来:从传统方法到自动化革命
在数字化时代的浪潮下,软件测试作为保障软件质量的重要环节,其方法和工具经历了翻天覆地的变化。本文将带领读者穿梭时光隧道,探索软件测试的发展历程,从手工测试的繁琐与局限性,到自动化测试的高效与精准,再到未来可能迎来的智能化与集成化趋势。通过深入浅出的分析,我们将揭示如何通过不断进化的软件测试技术,提升软件开发的效率和质量,确保在这个快速变化的时代中,软件产品能够稳健前行。
|
机器学习/深度学习 敏捷开发 大数据
软件测试的演变之旅:从传统方法到自动化革命
在数字时代的浪潮下,软件测试作为保障产品质量的关键一环,经历了从手工测试到自动化测试的重大转变。本文将探讨这一演变背后的驱动力、所面临的挑战以及未来的发展趋势,为读者揭示软件测试领域的深层次变革。
|
敏捷开发 Java 测试技术
探索自动化测试的奥秘:从Selenium到Appium
【9月更文挑战第14天】软件测试,这个看似枯燥乏味却至关重要的领域,正经历着一场革命。随着技术的进步,自动化测试工具如Selenium和Appium已成为质量保证的利器。本文将带你一探这些工具的神秘面纱,了解它们如何简化测试流程、提升效率,并确保软件产品的质量。准备好,我们将深入自动化测试的世界,解锁其背后的原理和实践技巧。