• 干货 | 读懂 Appium 日志,让测试效率翻倍!


    Appium 服务器运行时会产生很多日志,但是很多人并不了解其中的意义,也无法掌握有用的信息。本文将详细解读如何读懂 Appium 日志,并让你的测试效率翻倍。

    日志第一行显示了 Appium 版本和运行地址。
    如果你在 Appium 上添加了参数,他们会在日志中展示,如果添加了 defaultCapabilities,日志也会显示出来。
    对于自动化测试来说,这个信息很重要,因为不同的 Appium 版本有不同的功能和问题,必须要知道自己的 Appium 版本。

    为了自动化测试跑起来,session 要做很多事,日志提供了一些基本的 session 信息,特别是 desired capabilities 和 default capabilities。应该时刻注意 Appium 服务是否正确接收了请求内容,日志列出了创建 automation session(不懂 automation session 的看下面的链接)。

    Appium 是一个 REST 服务,接收 HTTP 请求,展示请求内容,返回某种结果。Appium 服务端日志用线和箭头展示了请求和返回的内容。在两个箭头之间是 Appium 服务端执行请求命令的日志信息:

    利用日志可以非常方便的排查错误,错误通常发生在 automation session 之后。但有时,如果 session 持续存在,错误也可能发生。所以第一步是找出错误在哪。
    下面的例子可以看出,每个指令用 [HTTP] → 和 [HTTP] ← 标记。这些标记之间是指令细节,包含了错误输出:

    用户试图用 Android driver 启动一个 session,但发生了错误。Appium 为准备 session 而关掉并清除 AUT 时发现了错误,这个错误让我们知道两件事:
    1.Appium 正在尝试做什么
    2.哪里出错了
    在这个例子中,Appium 尝试运行 adb 命令(adb shell am force-stop),adb 参数在错误信息中也有显示。发生了 Android 系统权限错误。此时,我们可以手动运行这个 adb 命令,看看错误是不是可以重现。如果错误重现,上网查错吧!如果 adb 命令成功运行,可能是 Appium 的 bug,应该去 Github 的 issue 上查看或者提交这个 bug 。(例子中的错误是设备制造商的安全模型造成的)
    这个例子只是众多错误中的一个,但它说明至关重要的一点,当错误发生时,日志可以提供更多的信息,如果没有完整的日志信息,对 Appium 排错难上加难。

    通常,默认的日志内容已经足够,如果你想去 Github 上寻求帮助,信息当然越多越好!下面一些参数可以改变 Appium 服务端的日志行为:

    • –log-level - 改变Appium日志显示级别。
    • Appium 默认展示所有日志,它有以下一些选项:‘info’, ‘info:debug’, ‘info:info’, ‘info:warn’, ‘info:error’, ‘warn’, ‘warn:debug’, ‘warn:info’, ‘warn:warn’, ‘warn:error’, ‘error’, ‘error:debug’, ‘error:info’, ‘error:warn’, ‘error:error’, ‘debug’, ‘debug:debug’, ‘debug:info’, ‘debug:warn’, ‘debug:error’。
    • –log-no-colors - 如果你的控制台没有颜色(日志可能会产生一些奇怪的字符,比如"TODO: find the color"),你可以用这个参数关闭颜色。
    • –log-timestamp - 在日志前添加时间戳,在排查超时错误时有奇效,展示如下:

    高效测试开发实战技能进阶提升?推荐霍格沃兹测试学院出品的 《测试开发从入门到高级实战》系统进阶班,可能是业界最具深度、最贴近大厂一线实践的测试开发课程。

    5 个月由浅入深,强化集训,测试大咖思寒领衔主讲,授之以渔,通过 10+ 企业级项目实战演练,带你一站式掌握 BAT 测试开发工程师必备核心技能(对标阿里巴巴P6+,挑战年薪50W+)!学员直推 BAT 名企测试经理,普遍涨薪 50%+!

  • 相关阅读:
    路由、 网络、互联网、因特网、公网私网IP、NAT技术
    redis-实现限流
    张大哥笔记:普通人如何搞钱?
    1. 堪比JMeter的.Net压测工具 - Crank 入门篇
    【目标检测】Faster R-CNN 论文复现代码(含源代码)
    Spring的循环依赖,到底是什么样的
    games101作业七,计算机图形学作业三,详细知识点总结(附代码)
    Unity-Timeline制作动画(快来制作属于你的动画吧)
    【Excel】排名之成绩并列排名(sumproduct、countif 函数的组合使用方法)
    Learning from Unlabeled 3D Environments forVision-and-Language Navigation
  • 原文地址:https://blog.csdn.net/ceshiren456/article/details/126930735