适用于 Android 应用程序的带有 Appium Inspector GUI 的移动测试自动化框架
项目描述
移动测试自动化框架 (MTAF) 支持 Web 和 Android 应用程序的端到端回归测试。它使用 Python 页面对象模型架构提供单元测试和行为驱动开发 (BDD) 测试用例组织。使用 Selenium Webdriver(用于 Web 应用程序)和 Appium Python 客户端(用于 Android 应用程序)模拟用户与被测应用程序 (AUT) 的交互。计划在未来的开发中支持 iOS(也使用 Appium)。
MTAF 的第一个版本仅包含 MTAF Inspector,这是一个帮助测试程序员创建使用 Appium 与 Android 应用程序交互的自动化测试的工具。其余的框架组件将在它们被重构以进行一般发布后被包括在内。
MTAF Inspector 创建一个图形用户界面 (GUI) 来捕获应用程序屏幕截图并计算显示元素的唯一部分 xpath。生成的 xpath 被转换为称为“zpath”的缩写格式,以使它们更短(Android xpath 可能很长)。
用户可以通过鼠标单击单独选择元素,或者在显示的屏幕截图上单击并拖动选择矩形以缩小屏幕上显示的部分 zpath 列表。资源 ID 也会显示,但有些元素没有,资源 ID 可能不代表屏幕截图上的唯一元素。
单击 ID 或 xpath 将在屏幕截图上勾勒出相应的元素,并将 ID 或 zpath 值复制到主 GUI。
主 GUI 可以使用 Appium 查找与 ID 或 zpath 值匹配的元素,并显示有关元素的信息。
特征
- MTAF 检查员:
用于帮助在 Android 设备上设计端到端测试的图形工具
适用于 Android 设备模拟器,或通过 USB 连接的 Android 设备
交互式确定屏幕元素的有效定位器,用于 Appium
当没有 Appium 服务器时,使用 adb 抓取屏幕截图和 xml
与 Appium 服务器一起使用时,查找和操作可见的屏幕元素
在日志文件中记录 Appium 交互
加载插件以扩展特定应用程序的菜单、zpath 和 GUI 元素(有关示例,请参见https://github.com/mccrorey48/mtaf_plugins )
- MTAF 库模块(Python):
- 亚行
为了在 Python 中使用 ADB,包含了 pyand ( https://github.com/ardevd/pyand ) ADB 模块(这避免了“pip install”无法识别托管在 github 上的模块的问题)
- selenium_actions
定义 SeleniumActions 类以使用 Selenium 方法
- android_actions
定义 AndroidActions 类以使用 Appium Python 客户端方法
- ios_actions(未来)
定义 IosActions 类以使用 Appium Python 客户端方法
- android_zpath
定义用于将 Android xpaths 转换为 zpaths 的缩写,这是一种使使用定位器更容易的短格式
- ios_zpath(未来)
定义用于将 iOS xpaths 转换为 zpaths 的缩写
- 过滤器.py
用于缩小 Appium Python 客户端搜索方法返回的屏幕元素列表的筛选函数
- mtaf_logging
Pythonmtaf_logging 的包装器
- prune_logs
限制保留的时间戳日志的数量和/或年龄的实用程序
- 痕迹
装饰器 formtaf_logging 方法调用和返回值
- 用户异常
为测试代码中的优雅异常处理定义 UserException 类
- 软电话(未来)
创建和管理 SIP 软电话以拨打和接听电话,以测试支持语音呼叫的设备
- 页面对象模型(未来):
被测应用程序显示的每个可见视图(称为“页面”)都有一个 Python 类,其中包含该页面的定位器,以及在显示该页面时要调用的方法
页面上可见元素的定位器被赋予了传达元素功能的名称
每个页面类代表一个单独的定位器名称命名空间,以便名称可以在其他页面上重复使用而不会发生冲突
测试步骤一般通过调用属于当前页面的类的方法来实现,这些方法从属于它们的类的定位器命名空间中获取定位器
当页面共享公共元素和功能时,它们可以从公共页面基类继承;在这种情况下,方法和定位器是从基类继承的,除非在当前页面类中被覆盖
- Python 单元测试(未来):
测试套件类是使用 Python unittest 模块约定构建的
Custommtaf_logging 和使用装饰器的方法调用跟踪
- Python 功能测试(未来):
使用 Python “行为”框架
使用 Gherkin BDD 语言在“功能”文件中编写测试
功能文件以功能/场景/步骤格式描述测试,使用“普通语言”短语来描述用户与应用程序的交互
测试步骤短语在 Python 中实现
测试结果保存在 MongoDB 数据库中,可使用 Web 浏览器查看
- 报告单页应用(未来):
AngularJS 应用程序显示 Python Feature Test 保存的测试结果
运行检查器
运行“pip install mtaf”时,名为“mtaf-inspector”的命令行可执行文件安装在取决于系统配置的目录中: - (Darwin) /usr/local/bin - (Linux) /usr/local/ bin - (Linux with virtualenv) <virtualenv directory>/<virtualenv name>/bin - (Windows) C:Python<version>Scripts - (Windows with virtualenv) C:Users<user name>Envs<virtualenv name>Scripts
如果满足以下要求,则可以运行 mtaf-inspector 可执行文件:
adb 可以在当前路径找到
Python 和 Tkinter 安装在本地机器上
Appium 服务器正在本地机器上运行(可选)
该脚本有权写入临时文件目录(默认值为 /tmp(Linux 或 Darwin)或 %TEMP%(Windows)中的“MtafInspector”
或者,可以使用以下两行从 Python 脚本运行检查器:
from mtaf.inspector import start start()
MTAF Inspector 提供了一个包含这些组件的 GUI(从上到下):
带有 Appium 和 ADB 操作的下拉菜单的菜单栏
用于执行需要 Appium 的各种操作的按钮和其他控件
用于输入任意 Python 命令的输入字段,当单击“exec”按钮时,这些命令将在全局上下文中运行
显示捕获的标准输出的滚动文本窗口
显示记录命令的滚动文本窗口
带有“截图”和“退出”按钮的栏
在 Appium 启动之前,需要 Appium 的按钮和控件以及 Appium 下拉菜单都将被禁用。要启动 Appium,请在本地机器上运行一个 Appium 服务器实例,然后单击菜单栏上的“启动 Appium”。
单击“屏幕截图”按钮以捕获屏幕截图和当前显示的 xml 表示。这不需要启动 Appium,因为如果 Appium 尚未启动,Inspector 将使用 ADB。Inspector 将显示屏幕截图,以及显示屏上每个元素的最小唯一相对 zpath 列;这些由 MTAF 方法翻译成 Appium 可以用来查找单个元素的最短 xpath。某些元素可能具有资源 ID,它们将显示在单独的列中。单击资源 id 将突出显示屏幕截图上的一个或多个元素(预加载主 GUI 中的“查找元素”定位器字段),并突出显示相应的 zpath。
配置
选项设置可以放在 YAML 配置文件中或包含在命令行中。
具有字符串值的选项的 YAML 格式为:
<option name>: <option value>
没有引号。
对于具有字典值的选项(请参阅下面的“zpath_tags_new”和“zpath_tags_all”),格式为:
<option name>:
<attribute name>: <value>
<attribute name>: <value>
etc.
可以使用以下格式在命令行上设置字符串值配置选项:
<option name>=<option value>
没有引号或空格。命令行上设置的选项将覆盖配置文件中同名的选项。
这是可能的命令行选项列表:
option long format description ------------------- ------------------------- ------------------------------------------------------- -h --help print usage and exit -c <file path> --config_file configuration file path (default: ./config.yml) -p <directory path> --plugin_dir prepended to sys.path for locating inspector_plugins module -d --debug print configuration -s --show_configuration_only print configuration and exit <option>=<value> set configuration options with string values
可能的配置选项包括:
option format description ----------------- ---------- ------------------------------------------------------------ tmp_dir directory for saving temporary files log_window_height text height of "standard output" and "recorded text" windows plugin_dir path to directory containing "inspector_plugins" directory zpath_tags_new dictionary zpaths (abbreviated minimal xpaths) to be added to the built-in list zpath_tags_all dictionary zpaths to replace the built-in list