Appium 自动化测试实战

霍格沃兹测试学社

ceshiren.com

目录

  • Appium 介绍
  • 元素定位技巧
  • 企业微信实战(PO 封装)

Appium 介绍

  • 跨语言 Java、Python、nodejs 等
  • 跨平台
    • Andoid、iOS
    • Windows、Mac
  • 底层多引擎可切换
  • 生态丰富,社区强大

Appium 框架结构

App 元素定位

  • 测试步骤三要素
    • 定位、交互、断言
  • 定位
    • 【通用】id 定位(优先级最高)
    • 【通用】XPath 定位(速度慢,定位灵活)
    • 【通用】Accessibility ID 定位(content-desc 属性)
    • 【仅 Android】Uiautomator 定位(速度快,语法复杂)
    • 【仅 iOS】Predicate 定位

XPath 定位

XPath 定位

  • xpath 表达式常用用法:
    • 1、表达式(contains、ends_with、starts_with 等)
    • 2、逻辑运算符(not、and 、or 等)

XPath 定位常用表达式

  • //* 页面所有的元素
  • //*[@text='登录'] 定位 text 属性为“登录”的元素
  • //*[contains(@resource-id, 'login')] 定位页面上 resource-id 属性为包含 “login” 的元素
  • //*[contains(@text,'手机')]/.. text 属性包含“手机” 的元素的父节点
  • //*[contains(@text,'手机')]/..//android.widget.EditText text 属性包含“手机” 的元素的父节点,然后在这个节点下查找标签为“android.widget.EditText”的元素
  • //*[contains(@resource-id, 'login') and contains(@text, '登录')] 同时满足 resource-id 属性包含“login”,text 属性包含“登录”的元素
  • //*[contains(@text, '登录') or contains(@class, 'EditText')] 满足 text 属性包含“登录” ,或者 class 属性包含“EditText”的元素

原生定位

企业微信实战

企业微信实战

  • 企业微信 添加联系人 用例
  • 企业微信 添加多个联系人 用例

传统测试用例的问题

  • 无法适应 UI 变化,UI 变化会导致大量的 case 需要修改
  • 大量的样板代码 driver find click
  • 无法清晰表达业务用例场景

Page Object 模式六大原则

实战练习思路

实战练习-时序图梳理用例

PO 模式主要组成元素

PO 模式 企业微信实战

  • 演练 App:企业微信 app
  • 演练语言:Python

测试框架改进

  • BasePage 的封装
  • 复用driver
  • find ,find_and_click ,swipe_find等方法封装
  • 加入日志

课后作业

  • 实现添加联系人功能的 PO 封装