开发者社区 问答 正文

如何截图?


MQC一直在探索和寻找各种方法帮助用户发现更多的问题、更快速的定位问题。 为此,我们提供了两类不同的截图功能来满足不同的用户的需求。


  • 自动截图。自动截图是我们提供的一种默认的截图方式,测试系统会在APP测试过程中,自动的进行屏幕抓取。这种方式下,您无需增加任何成本,只需要将APP和测试脚本提交即可。

  • 自定义截图。系统自动截图,有时候并不能满足您的精确截图的需求(比如把截图作为功能测试通过与否的决定条件)。为了满足精确截图的需求,我们推出了自定义截图功能, 自定义截图能够非常精确的进行截图。自定义截图是通过logcat日志发送截图消息实现的。

下面是自定义截图的使用方法。

  1. Robotium脚本
    在Robotium脚本中,我们需要通过Android系统自带的日志系统(android.util.Log)进行截图消息发送,具体使用方法:
    a. 不指定截图文件名,使用时间戳作为文件名[backcolor=transparent]Log[backcolor=transparent].[backcolor=transparent]i[backcolor=transparent]([backcolor=transparent]"MQC-LOG-MASTER"[backcolor=transparent],[backcolor=transparent]  [backcolor=transparent]"screenshot"[backcolor=transparent]);
  2. [backcolor=transparent]solo[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]2000[backcolor=transparent]);[backcolor=transparent]  [backcolor=transparent]// 调用截图,请等待2秒钟。

b. 指定截图文件名
  1. [backcolor=transparent]Log[backcolor=transparent].[backcolor=transparent]i[backcolor=transparent]([backcolor=transparent]"MQC-LOG-MASTER"[backcolor=transparent],[backcolor=transparent]  [backcolor=transparent]"screenshot  picName"[backcolor=transparent]);[backcolor=transparent] [backcolor=transparent]// 以picName作为本次截图的文件名。
  2. [backcolor=transparent]      solo[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]2000[backcolor=transparent]);[backcolor=transparent]  [backcolor=transparent]// 调用截图,请等待2秒钟

Appium脚本
我们需要调用Appium的Python 客户端包中的方法:
a. 不指定截图文件名称,使用时间戳作为文件名
  1. [backcolor=transparent]    [backcolor=transparent]// dirver 是Appium WebDriver的一个实例对象,可以通过driver 下的各个方法操作设备,比如shell函数,就是在手机上执行一个shell命令。
  2. [backcolor=transparent]    driver[backcolor=transparent].[backcolor=transparent]shell[backcolor=transparent]([backcolor=transparent]"log  -p  i  -t  MQC-LOG-MASTER  screenshot"[backcolor=transparent])
  3. [backcolor=transparent]    [backcolor=transparent]// 需要import time 这个包
  4. [backcolor=transparent]    time[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]2[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]// 等待2s

b. 指定截图文件名
  1. [backcolor=transparent]    [backcolor=transparent]// 以picName作为本次截图的名称
  2. [backcolor=transparent]    driver[backcolor=transparent].[backcolor=transparent]shell[backcolor=transparent]([backcolor=transparent]"log  -p  i  -t  MQC-LOG-MASTER  screenshot  picName"[backcolor=transparent])
  3. [backcolor=transparent]    [backcolor=transparent]// 需要import time 这个包
  4. [backcolor=transparent]    time[backcolor=transparent].[backcolor=transparent]sleep[backcolor=transparent]([backcolor=transparent]2[backcolor=transparent])[backcolor=transparent] [backcolor=transparent]// 等待2s

展开
收起
猫饭先生 2017-10-25 10:13:02 1482 分享 版权
阿里云 AI 助理回答

您提到的MQC(Mobile Quality Center)及其提供的自动截图与自定义截图功能,虽然听起来像是某个具体的移动应用测试平台的一部分,但实际上阿里云并没有直接名为MQC的服务。不过,基于您的描述,我可以帮助您理解如何在使用阿里云服务时,实现类似的应用自动化测试和日志管理功能。

应用自动化测试

对于移动应用自动化测试,阿里云提供了PTS性能测试服务EMR弹性MapReduce服务(如果涉及到大数据处理)来支持不同的测试需求。特别是PTS,它可以帮助您模拟大量用户访问场景,进行性能和压力测试,但直接的UI自动化测试功能并不在其核心服务范围内。

如果您需要进行UI层面的自动化测试,可能需要结合第三方工具或服务,如Appium、Robotium等,这些工具可以与阿里云的其他服务集成,比如通过ECS(Elastic Compute Service)实例部署测试环境,或者利用OSS(Object Storage Service)存储测试产生的截图和日志文件。

日志管理与分析

关于日志管理和分析,阿里云提供了SLS(Log Service)日志服务,这是一个实时的日志采集、存储、查询、分析平台。您可以将上述自动化测试过程中产生的日志(包括自定义截图指令相关的日志)通过配置发送到SLS,然后利用其强大的查询和分析功能快速定位问题。例如,根据您提供的脚本示例,可以在执行截图命令后,进一步配置将logcat日志或Appium生成的日志直接推送至SLS。

实现思路

  1. 自动化测试部署:在ECS实例上部署您的测试环境,运行Robotium或Appium脚本。
  2. 日志集成:修改测试脚本,在发送截图指令的同时,配置日志输出到阿里云SLS。这可能需要通过SLS的SDK或日志收集配置实现。
  3. 截图存储:自定义截图生成后,可以通过脚本将图片上传至OSS,这样既安全又便于管理和分享。
  4. 问题定位与分析:利用SLS分析日志,结合OSS中存储的截图,快速定位并解决问题。

综上所述,虽然阿里云没有直接对应MQC的服务,但通过组合使用ECS、PTS、SLS、OSS等服务,完全可以构建一个高效、可扩展的移动应用自动化测试及日志管理系统。

有帮助
无帮助
AI 助理回答生成答案可能存在不准确,仅供参考
0 条回答
写回答
取消 提交回答