【Python+Appium】开展自动化测试(七)截图方法

蔚落 2023-10-07 21:36 94阅读 0赞

目录

一,selenium模块的两种截图方法

二, snapshot(*args, **kwargs)

三,使用adb截图

总结


一,selenium模块的两种截图方法

  • get_screenshot_as_file(filename)
    参数filename为截图文件保存的绝对路径,如:

    1. driver.get_screenshot_as_file(r'E:/test_project/screenshot/test_01.png')
  • save_screenshot(filename)
    该方法与get_screenshot_as_file()不同的是,参数为文件名称,保存当前屏幕截图到当前脚本所在的文件,如:

    1. driver.save_screenshot('test_02.png')

上面两种方法使用举例,代码如下:

  1. # -*- coding:utf-8 -*-
  2. # @author: 给你一页白纸
  3. import time
  4. from appium import webdriver
  5. def android_driver():
  6. desired_caps = {
  7. "platformName": "Android",
  8. "platformVersion": "10",
  9. "deviceName": "PCT_AL10",
  10. "appPackage": "com.ss.android.article.news",
  11. "appActivity": ".activity.MainActivity",
  12. "automationName": "uiautomator2",
  13. "unicodeKeyboard": True,
  14. "resetKeyboard": True,
  15. }
  16. # 启动今日头条app
  17. driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps)
  18. driver.implicitly_wait(8)
  19. return driver
  20. def login_opera(driver):
  21. '''登录今日头条操作'''
  22. try:
  23. driver.find_element_by_id("com.ss.android.article.news:id/ciy").click() # 点击【我知道了】
  24. driver.find_element_by_id("android:id/button1").click() # 点击权限管理-确定按钮
  25. driver.find_element_by_xpath("//android.widget.TabWidget/android.widget.RelativeLayout[@index=3]").click() # 点击未登录
  26. driver.find_element_by_id("com.ss.android.article.news:id/a1c").click() # 未登录页点击登录按钮
  27. driver.find_element_by_id("com.ss.android.article.news:id/bfm").click() # 登录页点击“。。。”
  28. driver.find_element_by_xpath("//android.widget.LinearLayout[@index=4]").click() # 选择密码登录
  29. driver.find_element_by_id("com.ss.android.article.news:id/c7").send_keys("xxxxxxxx") # 输入账号
  30. driver.find_element_by_id("com.ss.android.article.news:id/ch").send_keys("xxxxxxxx") # 输入密码
  31. driver.find_element_by_id("com.ss.android.article.news:id/a31").click() # 点击登录
  32. except Exception as e:
  33. print("登录错误,原因是:{}".format(e))
  34. # 报错时截图
  35. driver.get_screenshot_as_file(r'E:\blog\blog_script\images\test_login_error_01.png')
  36. driver.save_screenshot('test_login_error_02.png')
  37. if __name__ == '__main__':
  38. driver = android_driver()
  39. 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可为空

  1. # 安装airtest
  2. pip install -U airtest
  3. # 导入并使用
  4. from airtest.core.api import *
  5. snapshot(filename='E:\images\screenshot_01.png', message="首页截图")

三,使用adb截图

  • 首先,进行截图,命令如下

    adb shell screencap -p +手机上图片保存路径,如:adb shell screencap -p /sdcard/image.png

    49e35248ea507c453f1a5495cf4b2640.png

  • 然后,将截图pull到电脑上,命令如下:

    adb pull +手机图片路径 +保存到电脑的路径,如:

    adb pull /sdcard/image.png C:\Users\xiaoqq\Desktop\test_project

    d52ee55be5862d90cdc08182584905b1.png

    此时我们在电脑相应的目录里就能找到该图片。

总结

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

发表评论

表情:
评论列表 (有 0 条评论,94人围观)

还没有评论,来说两句吧...

相关阅读