我的编程空间,编程开发者的网络收藏夹
学习永远不晚

Appium在Android UI测试应用

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

Appium在Android UI测试应用

  Appium 是一个 C/S 架构的,支持 Android/iOS Native, Hybrid 和 Mobile Web Apps 的测试框架,与测试程序通过 Selenum Webdriver 协议通讯。Webdriver 的好处是通过 HTTP RPC 的方式调用 Server 上的过程,编写测试脚本不受语言的限制,无论是 Python, Java, NodeJS 均可以方便的编写测试。本文中将使用 Python 进行编程。   起因是因为市场部的同事抛来如下需求:批量添加一些微信好友。直接抓取请求进行重放的方法是不靠谱的,微信与服务端的通讯均加密,Pass。考虑使用 xposed 等框架 hook 相关函数进行操作。但是 xposed 需要越狱,且开发复杂,Pass。后来想到了使用 UI 测试工具进行模拟操作,开发较为简单。   Android UI 测试工具有很多种,如 Monkey, UIAutomator, Selendroid, Robotium 等。其中 UIAutomator, Monkey, Selendroid 均为非侵入式的 UI 测试,也是不需要修改源代码,只要安装了目标程序可以进行测试。Robotium 需要与源码一同编译测试。Appium 实际上是一个测试工具的统一调度软件,将不同的非侵入式测试工具整合在一起,对外提供统一的 API。在 Android 2.3 以前的版本,Appium 会调用 Selendroid ,之后的版本会直接使用 UIAutomator,iOS 下使用 UIAutomation。Appium 还支持 FirefoxOS 的 UI 测试。

  安装 Appium   官网给出了命令行下的安装方法。但实际上 Appium 有 GUI 版本,更适合在 Windows/MacOS 下使用。Windows 下需要安装 .NET Framework。   > brew install node      # get node.js   > npm install -g appium  # get appium   > npm install wd         # get appium client   > appium &               # start appium   > node your-appium-test.js   Appium 需要依赖 Android SDK 编译在手机端运行的两个插件,因此需要首先安装相应的 Android SDK 版本。这里直接使用了 Android Studio 中自带的 SDK Manager。在 SDK Manager 中选择和测试机相对应的 SDK Platform 和较新的 Build-tools,如果需要使用模拟器测试还要装对应的 ARM/x86 System Image,以及 Intel HAXM Installer,用于加速 x86 虚拟机。Appium 使用 adb 来与目标机器通讯,因此对于真机和模拟器操作几乎都是相同的,如何建立模拟器在此不再赘述。   安装完成后需要在 Appium GUI 中配置 Android SDK 目录,随后选择 Android,点击 Launch 可以启动 Appium Server。

  Appium Server 默认会监听 http://localhost:4723 ,用于 RPC 通讯。下面我们可以打开熟悉的编程环境,编写 UI 测试用例了。这里使用 Python 进行编写,需要先安装 Appium 的 Python Client ,然后再 python 中使用 appium.webclient 可以连接 Appium server了。   pip install Appium-Python-Client   使用 Appium 进行 UI 控制   根据注释修改相应属性后即可运行测试。手机需要打开 ADB 调试,执行完以下代码后,Appium 会在手机上安装 Appium Settings 和 Unlock 两个程序,随后微信会被启动。   from appium import webdriver   desired_caps = {}   desired_caps['platformName'] = 'Android' #测试平台   desired_caps['platformVersion'] = '5.1' #平台版本   desired_caps['deviceName'] = 'm3_note' #设备名称,多设备时需区分   desired_caps['appPackage'] = 'com.tencent.mm' #app package名   desired_caps['appActivity'] = '.ui.LauncherUI' #app默认Activity   dr = webdriver.Remote('http://localhost:4723/wd/hub', desired_caps) #启动Remote RPC   Selenum Webdriver 使用了一种类似于 JS 中的 DOM 模型的方法来选择页面中的元素。dr 为当前正在活动的 activity 对象,可以使用 findElementByXXX 的方法来获取 Activity 中的元素。所有 Element 后带 s 的函数,均获得所有匹配的元素,不带 s 的函数获得第一个匹配的元素。   查询函数   1. findElement(s)ByName   在 Android 中基本没用。Android UI 没有 Name 这个属性。有说可以使用 text 值获取。但我并没有成功   2. findElement(s)ByClassName   通过类名来获取元素,用法如下:   item_list = dr.find_elements_by_class_name("android.widget.LinearLayout")   item_list[2].click()   3. findElementById   通过 resource_id 来获取元素,每个 Activity 中都是的,用法如下   t = dr.find_element_by_id("com.tencent.mm:id/f7")   t.send_keys(wechatId)   4. findElement(s)ByAccessbiltiyId   在 Android 上 AccessbilityID 实际是 contentDescription 。这个属性是为了方便视力受损人士使用手机所设置。开启 TTS 后系统会朗读相关控件的 contentDescription。   5. findElement(s)ByXPath   通过 XML Path 描述来寻找元素。我没有成功的获取到,可能是 XPath 写的有问题。   s = dr.find_element_by_xpath("//android.widget.TextView[contains(@text,'搜索')]")   s.click()   6. findElementByAndroidUIAutomator   通过 UIAutomator 的选择器来获取元素。因为 Appium 在 Android 上实际是调用的 UIAutomator,所以可以通过 UIAutomator 的选择器来选择元素。   el = dr.find_element_by_android_ui_automator("new UiSelector().text("搜索")")   el.click()   操作函数   操作函数用于操作选定的元素,有很多,以下仅列举几个,更多的请查阅手册。   click   send_keys   clear   查询函数返回的元素对象可以像 JS 中的 dom 元素一样,继续使用查询函数来选定其子元素。用例如下。   search = dr.find_element_by_id("com.tencent.mm:id/aqw")   .find_element_by_class_name("android.widget.RelativeLayout")   search.click()   如何确定查询规则   了解了相关的函数后,下面应对 UI 进行定位了。如果是自己团队开发的程序,推荐让开发同学在所有的空间上都添加 resource_id 进行定位。如果碰到没有谈价 resource_id 的元素,那要使用别的办法进行定位了。   1. UI Automator Viewer   UI Automator Viewer 是 Android 官方的 UI 定位工具,位于 sdk/tools 下。运行后会打开 viewer 界面。按钮即可获取当前正在运行的 Activity 的 UI 结构。


免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

Appium在Android UI测试应用

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

Appium在Android UI测试应用

Appium 是一个 C/S 架构的,支持 Android/iOS Native, Hybrid 和 Mobile Web Apps 的测试框架,与测试程序通过 Selenum Webdriver 协议通讯。Webdriver 的好处是通过
2022-06-06

Python之Appium 2自动化测试(Android篇)

一、环境搭建及准备工作 1、Appium 2 环境搭建 请参考另一篇文章: Windows系统搭建Appium 2 和 Appium Inspector 环境 2、安装 Appium-Python-Client,版本要求3.0及以上 和 S
Python之Appium 2自动化测试(Android篇)
2023-12-23

如何使用appium做Android手机自动化测试

这篇文章给大家介绍如何使用appium做Android手机自动化测试,内容非常详细,感兴趣的小伙伴们可以参考借鉴,希望对大家能有所帮助。Appium这个听起来既生疏也熟悉的自动化测试工具,比起原生的UiAutomator可能是异常的不起眼,
2023-06-05

IOS、Android自动化测试框架Appium概述

AppiumAppium是一个开源、跨平台的测试框架,可以用来测试原生及混合的移动端应用。Appium支持IOS、Android及FirefoxOS平台。Appium使用WebDriver的json wire协议,来驱动Apple系统的UI
2022-06-06

Appium自动化测试之知乎Android客户端

前些日子,配置好了appium测试环境,至于环境怎么搭建,参考:http://www.cnblogs.com/tobecrazy/p/4562199.html接下来我们研究一下测试知乎Android客户端。自行下载配置目录如下:把知乎客户端
2022-06-06

Android UI自动化测试佳实践

一、概述Android系统测试和Web的测试类似,有两类自动化的方式:录制回放与手动开发自动化case。由于录制回放在长期维护与代码重用方面存在问题,这里主要的方式还是采用手动开发自动化case来进行。在Web自动化测试中有一个比较好的实践
2022-06-06

Android应用性能测试

前提所有的功能分支已完成启动:1. 启动入口:桌面正常启动,近运行启动,所有程序列表中启动,锁屏快捷启动2. 其他入口:从其他程序开启应用,从外部以文件形式打开应用(如果有)3. 退回:从其他程序退回时回到被测应用,被测应用打开其他应用再从
2022-06-06

Android应用测试总结

Android应用程序测试注意要点:1、应用程序功能是否都实现2、给用户的提示信息是否简单、易于理解,且符合当前事件3、交互性事件的影响:(1)硬件:USB插拔、电池没电及插拔;(2)软件:电话来电、短信、QQ,音乐盒等后台运行的软件。4、
2022-06-06

使用C#和Appium怎么实现Android自动测试环境

今天就跟大家聊聊有关使用C#和Appium怎么实现Android自动测试环境,可能很多人都不太了解,为了让大家更加了解,小编给大家总结了以下内容,希望大家根据这篇文章可以有所收获。模拟环境搭建模拟环境搭建建议用Android Studio
2023-06-15

解放双手,Android开发应该尝试的UI自动化测试

前言 人们懒的走路,才创造了汽车;  人们懒的爬楼,才创造了电梯;  人们懒的扫地,才创造了自动扫地机器人。  人类的进步,离不开这些喜欢偷懒的人,Google希望,当Android的开发者利用Espresso写完测试用例后,能一边看着测试
2022-06-06

怎么用Python+Appium做自动化测试

这篇文章主要讲解了“怎么用Python+Appium做自动化测试”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“怎么用Python+Appium做自动化测试”吧!目录一、环境准备二、真机测试一
2023-06-20

Android应用的单元测试

1、在进行单元测试前首先必须AndroidManifest.xml中进行配置:(1)
2022-06-06

Android 中构建快速可靠的 UI 测试

前言 让我一起来看看 Iván Carballo和他的团队是如何使用Espresso, Mockito 和Dagger 2 编写250个UI测试,并且只花了三分钟就运行成功的。 在这篇文章中,我们会探索如何使用Mockito(译者注:Moc
2022-06-06

Android中构建快速可靠的UI测试

前言让我一起来看看 Iván Carballo和他的团队是如何使用Espresso, Mockito 和Dagger 2 编写250个UI测试,并且只花了三分钟运行成功的。在这篇文章中,我们会探索如何使用Mockito(译者注
2022-06-06

【Appium学习笔记】从零搭建Android自动化测试环境

目录一、Appium简介二、测试环境1. Appium-Client2. Appium-Server3. 移动设备三、软件配置1. Window系统配置2. Android Emulator配置2.1 移动开发组件安装2.1 Android
2022-06-06

怎么用Espresso测试UI界面

小编给大家分享一下怎么用Espresso测试UI界面,希望大家阅读完这篇文章之后都有所收获,下面让我们一起去探讨吧!  基本测试  先来看看可能需要写的一些常见测试:    按照上面的模式,根据要求编写测试用例:  在默认窗口层次结构之外测
2023-06-05

移动应用测试框架?AppGrader(Android)

AppGrader是来自以色列的应用测试服务商uTest推出的一款测试产品。相比其他主流移动应用测试框架,AppGrader可能并不太为开发者所熟知,但它却能够为众多的Android开发者提供非常专业的意见参考。通过AppGrader,开发
2022-06-06

编程热搜

  • Android:VolumeShaper
    VolumeShaper(支持版本改一下,minsdkversion:26,android8.0(api26)进一步学习对声音的编辑,可以让音频的声音有变化的播放 VolumeShaper.Configuration的三个参数 durati
    Android:VolumeShaper
  • Android崩溃异常捕获方法
    开发中最让人头疼的是应用突然爆炸,然后跳回到桌面。而且我们常常不知道这种状况会何时出现,在应用调试阶段还好,还可以通过调试工具的日志查看错误出现在哪里。但平时使用的时候给你闹崩溃,那你就欲哭无泪了。 那么今天主要讲一下如何去捕捉系统出现的U
    Android崩溃异常捕获方法
  • android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
    系统的设置–>电池–>使用情况中,统计的能耗的使用情况也是以power_profile.xml的value作为基础参数的1、我的手机中power_profile.xml的内容: HTC t328w代码如下:
    android开发教程之获取power_profile.xml文件的方法(android运行时能耗值)
  • Android SQLite数据库基本操作方法
    程序的最主要的功能在于对数据进行操作,通过对数据进行操作来实现某个功能。而数据库就是很重要的一个方面的,Android中内置了小巧轻便,功能却很强的一个数据库–SQLite数据库。那么就来看一下在Android程序中怎么去操作SQLite数
    Android SQLite数据库基本操作方法
  • ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
    工作的时候为了方便直接打开编辑文件,一些常用的软件或者文件我们会放在桌面,但是在ubuntu20.04下直接直接拖拽文件到桌面根本没有效果,在进入桌面后发现软件列表中的软件只能收藏到面板,无法复制到桌面使用,不知道为什么会这样,似乎并不是很
    ubuntu21.04怎么创建桌面快捷图标?ubuntu软件放到桌面的技巧
  • android获取当前手机号示例程序
    代码如下: public String getLocalNumber() { TelephonyManager tManager =
    android获取当前手机号示例程序
  • Android音视频开发(三)TextureView
    简介 TextureView与SurfaceView类似,可用于显示视频或OpenGL场景。 与SurfaceView的区别 SurfaceView不能使用变换和缩放等操作,不能叠加(Overlay)两个SurfaceView。 Textu
    Android音视频开发(三)TextureView
  • android获取屏幕高度和宽度的实现方法
    本文实例讲述了android获取屏幕高度和宽度的实现方法。分享给大家供大家参考。具体分析如下: 我们需要获取Android手机或Pad的屏幕的物理尺寸,以便于界面的设计或是其他功能的实现。下面就介绍讲一讲如何获取屏幕的物理尺寸 下面的代码即
    android获取屏幕高度和宽度的实现方法
  • Android自定义popupwindow实例代码
    先来看看效果图:一、布局
  • Android第一次实验
    一、实验原理 1.1实验目标 编程实现用户名与密码的存储与调用。 1.2实验要求 设计用户登录界面、登录成功界面、用户注册界面,用户注册时,将其用户名、密码保存到SharedPreference中,登录时输入用户名、密码,读取SharedP
    Android第一次实验

目录