App自动化用例录制、结构分析

1、自动化用例录制

目录

  • Appium Inspctor 功能介绍
  • Appium Inspctor 用法介绍

Appium Inspctor 功能介绍

  • UI 分析
  • 录制用例
  • 元素查找测试
  • Attcah 已有的 session
  • 云测试

用例录制

  • 获取 app 的信息
  • 配置待测应用

image

 

 

获取 app 的信息

  • app 入口,两种方式获取:

    • 1、通过 logcat 日志获取

      • Mac/Linux: adb logcat ActivityManager:I | grep “cmp"
      • Windows: adb logcat ActivityManager:I | findstr "cmp"
    • 2、通过 aapt 获取

      • Mac/Linux: aapt dump badging wework.apk | grep launchable-activity
      • Windows: aapt dump badging wework.apk | findstr launchable-activity
  • 启动应用命令 adb shell am start -W -n <package-name>/<activity-name> -S

配置待测应用

  • platformName:平台,Android/iOS
  • deviceName:设备名
  • appPackage:应用的包名
  • appActivity:应用的页面名 Activity
  • noReset: 防止清空缓存信息

 

 

验证是否启动成功:

 

Appium inspector 页面结构

功能键

  • SelectElements:选中元素,查看层级和属性
  • Swipe By Coordinates:通过坐标点滑动
  • Tap By Coordinates:通过坐标点点击
  • Back:返回
  • Refresh Source & Screenshot:刷新页面
  • StartRecording:开始录制脚本
  • Search for element:搜索元素
  • Copy XML Source to Clipboard:复制 xml 结构
  • Quit Session & Close Inspector:退出当前 Session

示例

  1. 下载官方 Demo apk(github.com/appium/appi…
  2. 安装 API Demo.apk

示例-录制用例

  1. 打开 API Demo 应用
  2. 点击 OS,进入下个界面
  3. 点击【Morse Code】
  4. 输入内容【ceshiren.com
  5. 返回上一个页面
  6. 返回上一个页面
  7. 关闭应用

image

2、自动化测试用例结构分析

desktop 生成用例脚本

  • el1:点击 OS ,进入下一个页面
  • 调用点击方法
  • el2:点击 Morse Code
  • 调用sendkeys方法,输入ceshiren.com
  • 返回
el1 = driver.find_element_by_accessibility_id("OS")
el1.click()
el2 = driver.find_element_by_accessibility_id("Morse Code")
el2.click()
el3 = driver.find_element_by_id("io.appium.android.apis:id/text")
el3.clear()
el3.send_keys("ceshiren.com")
driver.back()
driver.back()

用例脚本优化

  • 添加 capability 信息

  • 初始化webdriver,添加setupteardown

  • 添加隐式等待和noReset属性增强用例稳定性

  • 添加断言

  • 注意

    • selenium 版本建议 3.141.0
    • appium-python-client 版本建议 1.2.0

完整代码

import time
from appium import webdriver
from appium.webdriver.common.mobileby import MobileBy


class TestXueQiu:
    def setup(self):
        desire_cap = {}
        # 平台
        desire_cap['platform'] = 'Android'
        # 设备名
        desire_cap['deviceName'] = 'emulator'
        # app 包名
        desire_cap['appPackage'] = 'io.appium.android.apis'
        # app 页面名
        desire_cap['appActivity'] = '.ApiDemos'
        self.driver = webdriver.Remote("http://127.0.0.1:4723/wd/hub", desire_cap)
        self.driver.implicitly_wait(10)

    def teardown(self):
        time.sleep(3)
        # 退出应用
        self.driver.quit()

    def test_api_demo(self):
        """
        1、打开 API demo apk
        2、点击 OS 控件
        3、点击 Morse Code 控件
        4、在搜索框中输入 ceshiren.com
        5、返回到第一页
        6、断言
        :return:
        """
        # 点击 OS 控件
        self.driver.find_element_by_accessibility_id("OS").click()
        # 点击 Morse Code 控件
        self.driver.find_element_by_accessibility_id("Morse Code").click()
        # 输入`ceshiren.com`
        self.driver.find_element_by_id("io.appium.android.apis:id/text").clear()
        self.driver.find_element_by_id("io.appium.android.apis:id/text").send_keys("ceshiren.com")
        # 返回第一页
        self.driver.back()
        self.driver.back()
        self.driver.back()
        # 选择元素进行断言
        result = self.driver.find_element(MobileBy.XPATH,"//*[@resource-id='android:id/text1'][1]")
        print(result.text)
        # 断言
        assert result.text == "Access'ibility"

# 导入 pip install appium-python-client
from appium import webdriver

# 创建一个字典,desirecapbility
caps = {}
caps["platformName"] = "Android"
# Android 包名和页面名,获取命令:
# mac/linux: adb logcat ActivityManager:I | grep "cmp"
# windows: adb logcat ActivityManager:I | findstr "cmp"
caps["appPackage"] = "io.appium.android.apis"
caps["appActivity"] = ".ApiDemos"
caps["deviceName"] = "emulator-5554"
# 创建driver ,与appium server建立连接,返回一个 session
driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)

el1 = driver.find_element_by_accessibility_id("OS")
el1.click()
el2 = driver.find_element_by_accessibility_id("Morse Code")
el2.click()
el3 = driver.find_element_by_id("io.appium.android.apis:id/text")
el3.clear()
el3.send_keys("ceshiren.com")
driver.back()
# 返回
driver.back()
# 回收session
driver.quit()

# 导入 pip install appium-python-client
from time import sleep

from appium import webdriver
from appium.webdriver.common.appiumby import AppiumBy


class TestAppDemo:
    def setup(self):
        # 创建一个字典,desirecapbility
        caps = {}
        caps["platformName"] = "Android"
        # Android 包名和页面名,获取命令:
        # mac/linux: adb logcat ActivityManager:I | grep "cmp"
        # windows: adb logcat ActivityManager:I | findstr "cmp"
        caps["appPackage"] = "io.appium.android.apis"
        caps["appActivity"] = ".ApiDemos"
        caps["deviceName"] = "emulator-5554"
        caps["noReset"] = "true"

        # 创建driver ,与appium server建立连接,返回一个 session
        # driver 变成self.driver 由局部变量变成实例变量,就可以在其它的方法中引用这个实例变量了
        self.driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
        self.driver.implicitly_wait(5)

    def teardown(self):
        # 回收session
        self.driver.quit()

    def test_input(self):
        # el1 = self.driver.find_element_by_accessibility_id("OS")
        el1 = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "OS")
        el1.click()
        # el2 = self.driver.find_element_by_accessibility_id("Morse Code")
        el2 = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Morse Code")
        el2.click()
        # el3 = self.driver.find_element_by_id("io.appium.android.apis:id/text")
        el3 = self.driver.find_element(AppiumBy.ID, "io.appium.android.apis:id/text")
        # 清除原有的内容
        el3.clear()
        el3.send_keys("ceshiren.com")
        el3.clear()
        # 手动制造关闭应用
        sleep(5)
        # 启动应用, 热启动,会进入到app 的首页
        self.driver.launch_app()
        result = self.driver.find_element(AppiumBy.ACCESSIBILITY_ID, "Accessibility").text
        # 断言
        assert result == "Accessibility"

3、capability 配置参数解析

目录

  • capability 含义
  • capability 参数介绍

Capability 简介

  • 功能:配置 Appium 会话,告诉 Appium 服务器需要自动化的平台的应用程序

  • 形式:键值对的集合,键对应设置的名称,值对应设置的值

  • 主要分为三部分

    • 公共部分
    • ios 部分
    • android 部分

Session

  • Appium 的客户端和服务端之间进行通信的前提
  • 通过 Desired Capabilities 建立会话

公共部分参数配置

Android 部分特有参数配置

 

iOS 独有

 

Desire capability 参数示例

  • API Demo 启动页配置
{
  "platformName": "android",
  "deviceName": "emulator-5554",
  "appPackage": "io.appium.android.apis",
  "appActivity": ".ApiDemos"
}

 

配置优化

  • 添加参数,提高用例的稳定性
{
  "noReset": "true", // 不清空缓存信息
  "dontStopAppOnReset": "true", // 首次启动的时候,不停止app
  "skipDeviceInitialization": "true", // 跳过安装,权限设置等操作
  "unicodeKeyBoard": "true" // 输入中文
}

4、app 自动化控制

目录

  • 启动
  • 数据清理
  • 关闭

启动

  • 启动应用
  • 方式一:webdriver.remote("url",desirecapability)
  • 方式二:launch_app() 将应用启动起来

# 方式一:
self.driver = webdriver.Remote\
("http://127.0.0.1:4723/wd/hub", desire_cap)

# 方式二:
self.driver.launch_app()

 

数据清理

  • 清空输入框内容

    • clear()
self.driver.find_element_by_accessibility_id('SomeAccessibilityID').clear()

关闭

  • 退出app

    • quit()
self.driver.quit()

最后: 为了回馈铁杆粉丝们,我给大家整理了完整的软件测试视频学习教程,朋友们如果需要可以自行免费领取 【保证100%免费】

 全套资料获取方式:点击下方小卡片自行领取即可

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
iTestin3.0.1版本: 简单.强大.专业。 iTestin 基于真实终端设备的脚本录制、回放,验证工具。友好、简便的操作界面,强大的脚本录制功能。适用于Android系统下的Phone和Pad。从简单到深入为Android应用程序测试. iTestin3.0.1实用功能概括: 控件识别与坐标录制脚本 支持脚本本地编辑功能 支持滑屏,长按等操作 支持账号及复杂文本的输入 支持断言、休眠、截屏等脚本操作 支持插入、删除、编辑操作 支持脚本在不同分辨率安卓终端上运行 支持脚本上传云端千款终端同时测试 WindowsXP及以上操作系统.运行畅通,挣脱环境束缚.保证系统兼容性. iTestin自动化测试工具特点:   1、全面的自动化测试   提供业界最全面的自动测试服务类型:兼容测试、性能测试、功能测试。真实记录测试过程,返回测试结果。测试结果包括:安装时长、启动时长,CPU占用、内存占用、界面截图、Log日志,Bug原因及分析等。   2、支持基于Android的应用、手游的复杂脚本录制   全球首款支持Android系统的自动化脚本工具,采用黑盒测试,为移动开发者提供基于批量终端的功能测试、脚本录制回放,及测试记录的功能。支持多功能点的应用、手游的脚本录制,支持长按、划屏、输入账号、密码等的深度遍历操作录制。   3、快速交付   支持记录在移动终端设备上记录操作行为;生成、编辑脚本文件;支持在本地设备上反复回放验证、运行,调试,并记录回放结果。iTestin还支持将录制好的脚本上传至Testin真机云测试平台,在大批量终端上进行功能测试验证。   4、标准化报告   Testin为开发者提供最专业、最详细的测试报告,采用黑盒测试忠实记录脚本在真机上的运行过程,自动生成屏幕截图和Log日志等,帮助开发者快速找到Bug原因。 iTestin自动化测试工具重点功能:   a、 连接和管理连接在PC上的终端设备,包括Phone和Pad。   b、支持在终端设备上记录操作行为、自动生成屏幕截图、Log日志等,并可生成相应脚本上传至iTestin平台。   c、支持在终端设备上记录操作行为、生成脚本文件。支持在终端设备上反复回放脚本进行本地验证并记录回放结果。自动导出错误屏幕截图和Log日志等。   d、支持在PC上上传录制的脚本文件和应用包到Testin平台,在Testin云测终端云的其他终端上按脚本执行应用程序做功能测试。 主要升级内容: 版本号:3.0.1-beta 1、编辑脚本时,右键菜单增加“修改”功能,用户可直接修改延时时长 2、客户端界面底部增加“查看更新信息”功能,可以查看最新更新信息 3、完善控件录制功能,修复某些应用引导界面无法正常识别控件的问题 4、完善控件录制功能,使客户端画面与终端实际画面保存同步 5、完善控件回放功能,使回放结果检查更准确 6、优化提交脚本界面和云测试界面分别增加loading提示
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值