技术分享 | Appium 用例录制

2024-04-14 1198阅读

技术分享 | Appium 用例录制

下载及安装

下载地址:

github.com/appium/appi…

下载对应系统的 Appium 版本,安装完成之后,点击 “Start Server”,就启动了 Appium Server。

在启动成功页面点击右上角的放大镜,进入到创建 Session 页面。配置好 desirecapability 信息之后,点击“Start Session”启动会话就展示出下面的页面。Appium Inspector 元素定位页面:

技术分享 | Appium 用例录制

左侧为屏幕快照:可以在左侧使用鼠标选择 UI 元素,会看到它们高亮显示。

中间为页面 DOM 树结构:在应用层次结构中会直接将元素的属性值标记在树上,这对于 Appium 定位元素很方便。

右侧为元素的详细信息:当元素被选中,右侧会展示出元素的详细属性信息列表。这些属性将决定 Appium 定位元素的策略。

另外 Appium Inspector 还提供了页面刷新,页面操作,录制,元素的点击、输入等功能。

Appium自动化用例录制

Appium Inspect 提供了定位元素与录制用例的功能,使用 Appium Inspect 可以查看移动设备的 UI 布局结构,方便脚本的编写和生成。下面以 Android 系统为例。在 Android 模拟器上安装 ApiDemos-debug.apk 应用。

测试应用下载地址:

github.com/appium/samp…

下载该 apk 并安装到测试设备,之后会基于该 app 进行自动化测试。

在录制脚本前启动测试设备,并且通过命令行查看该设备已连接成功。使用下面的命令查看设备是否连接,展示出下面的内容,即说明设备已连接。

$ adb devices List of devices attached emulator-5554 device

上面的结果中,“emulator-5554” 代表设备的名称,“device” 代表设备的状态,说明设备已连接。如果是其它状态,需要重新连接设备,或者在设备上检查是否开启开发者模式,以及打开 USB 调试模式。

获取应用包名和页面名称

移动端的包名(也就是 Package)作为每个 app 的唯一标识,每个 APP 都有自己的 Package Name,且每个设备上相同的包名的 APP,只允许安装一个。

页面(也就是 Activity)是 Android 组件中最基本,也是常见的四大组件之一,可以理解为一个页面就是一个 Activity,移动端打开一个 app 的页面,在操作页面的时候会发生页面的跳转,也就是 Activity 之间发生了切换。在编写测试脚本之前,首先要获取应用的包名以及启动页的 Activity 名字。

获取包名,终端进入 aapt 工具所在目录(Android SDK 的 build-tools 目录下),输入:

aapt dump badging [app名称].apk

运行结果:

技术分享 | Appium 用例录制

图中“package:name”对应的结果是包名,“Lauchable-activity:name”对应的结果是“包名+页面名”。但是有些不符合规范的应用,通过 aapt 命令无法获取到 “Lauchable-activity:name” 这部分内容。

针对上面的问题,就需要在测试设备上启动 APP,然后在终端输入如下命令(Mac OS / Linux 系统):

adb logcat | grep ActivityManager

运行结果如下图:

技术分享 | Appium 用例录制

Appium-desktop自动化用例录制

1. 启动 Appium Server

使用 Appium Inspector 录制测试脚本,首先需要启动 Appium-desktop,点击“Start Server”,如下图:

技术分享 | Appium 用例录制

2. 打开 Appium Inspect 工具

点击右上角“Start inspector Session”按钮,打开 inspector 工具,图形页面如下:

技术分享 | Appium 用例录制

Inspector 就是探测器,给它相应的参数,启动 app 帮你分析移动端 APP 的 UI 界面,还可以使用它录制脚本,支持导出多种语言的测试脚本。

3. 配置 Desired Capabilities 信息

技术分享 | Appium 用例录制

  • platfromName:使用哪个移动操作系统平台,这里可以填 Android、iOS

  • deviceName:设备名称,可以随便填,但必须得有此项

  • appPackage:要启动的 android 应用程序包(“io.appium.android.apis”)

  • appActivity:App 启动的首页 Activity(“.ApiDemos”或者“io.appium.android.apis/.ApiDemos”)

    4. 启动 Session

    点击 “Start Session”,录制脚本。

    对于 Appium 的初学者,可以通过录制功能,了解编写用例的时候需要使用哪些 API,有哪些编写规范等,可以作为一个很好的参考。

    点击“开始录制”按钮(小眼睛图标):

    技术分享 | Appium 用例录制

    左侧选择要操作的页面元素,在右侧选择要做的操作:

    技术分享 | Appium 用例录制

    Tap 为点击元素 Send keys 为文本框录入 Clear 为清空文本框

    利用上图 1,2 步组合,就可以实现对 app 的操作。比如在截取的页面中鼠标点击“Views”->点击 Tap,再点击“Buttons”->点击 Tap。每操作一步,都会自动生成脚本,如图:

    技术分享 | Appium 用例录制

    默认生成的语言为 Java-unit,如果想生成其他语言,只要点击下拉栏选择相应选项即可,这里切换成 Python 语言。

    把代码复制粘贴到编辑器中,就可以运行。代码如下:

    from appium import webdriver
    caps = {}
    caps["platformName"] = "android"
    caps["deviceName"] = "demo"
    caps["appPackage"] = "io.appium.android.apis"
    caps["appActivity"] = ".ApiDemos"
    caps["autoGrantPermissions"] = "true"
    driver = webdriver.Remote("http://localhost:4723/wd/hub", caps)
    el2 = driver.find_element_by_id("tv.danmaku.bili:id/expand_search")
    el2.click()
    el3 = driver.find_element_by_accessibility_id("搜索查询")
    el3.send_keys("霍格沃兹测试学院")
    driver.quit()
    

    上面是录制出来的代码,录制生成的代码需要手动优化,添加需要的单元测试框架(比如 Pytest,Unittest)使代码更优雅。代码录制对刚入门的人来说还是比较实用的,它的缺点也是很明显:

    • 所有的代码都会在一个文件里,显得代码非常的冗余

    • 不能解决工作中大部分的场景

      行动吧,在路上总比一直观望的要好,未来的你肯定会感 谢现在拼搏的自己!如果想学习提升找不到资料,没人答疑解惑时,请及时加入扣群: 320231853,里面有各种软件测试+开发资料和技术可以一起交流学习哦。

      最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

      技术分享 | Appium 用例录制

      这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!

      技术分享 | Appium 用例录制

VPS购买请点击我

免责声明:我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理! 部分文章是来自自研大数据AI进行生成,内容摘自(百度百科,百度知道,头条百科,中国民法典,刑法,牛津词典,新华词典,汉语词典,国家院校,科普平台)等数据,内容仅供学习参考,不准确地方联系删除处理! 图片声明:本站部分配图来自人工智能系统AI生成,觅知网授权图片,PxHere摄影无版权图库和百度,360,搜狗等多加搜索引擎自动关键词搜索配图,如有侵权的图片,请第一时间联系我们,邮箱:ciyunidc@ciyunshuju.com。本站只作为美观性配图使用,无任何非法侵犯第三方意图,一切解释权归图片著作权方,本站不承担任何责任。如有恶意碰瓷者,必当奉陪到底严惩不贷!

目录[+]