零基础APP自动化测试教程(二)

本文接上篇-零基础APP自动化测试教程(一)
继安装使用之后,将讨论Appium的基础用法,希望读者读完此文能够利用Appium做些简单的自动化操作。

查看appPackage和appActivity

使用Appium对APP进行操作之前,首先我们得告诉它操作对象的package-Name和lanchable-Activity,即APP的入口,总不能为难人家让它猜你想执行的应用吧。

那么如何简单快捷的得到以上两条信息呢?可以通过aapt进行查询,aapt是Android自带的小工具,在SDK的build-tools目录下可以找到。如果安装时没有发现,也可以自行在网上搜索下载该工具。
该aapt指令如下,其中PackageName.apk是APP安装包的路径:
aapt dump badging PackageName.apk
在cmd中输入完成后,会反馈如下信息给我们,找到PackageName和launchable-activity
即可,这样我们就可以在Desired Capabilities中告诉Appium需要操作的APP信息了。


定位APP中的控件元素

找到APP的入口后,如何定位APP中的控件元素呢?即如何告诉Appium需要对哪个控件(如按钮、编辑框等)进行操作呢?别急,贴心的Appium为我们提供了众多的方法来解决这个问题。下面将介绍对原生应用元素的定位,WEB应用及混合应用暂时不做过多介绍。
这里需要分为两步走:
1.人工查找控件的id、name、ClassName、xpath、AccessibilityId等某条信息。这里可以利用Android自带的UIAutomatorViwer,该工具可以在SDK的tools目录下找到。如下图所示,在左边的UI界面中点击我们感兴趣的控件,该控件的详细信息就会显示在右边的列表框中,即包括了我们刚刚提到的控件信息。



2.调用函数来定位元素,这里将以Python为例进行说明,其他语言大同小异。
通过控件id定位元素,即上图中的resource-id
driver.find_element_by_id(id)driver.find_elements_by_id(id)
通过控件name定位元素,即上图中的text
driver.find_element_by_name(name)driver.find_elements_by_name(name)
通过控件ClassName定位元素,即上图中的class
driver.find_element_by_class_name(name)driver.find_elements_by_class_name(name)
通过控件AccessibilityId定位元素,即上图中的content-desc
driver.find_element_by_accessibility_id(id)driver.find_elements_by_accessibility_id(id)
通过控件xpath定位,其中xpath需要逐步拼凑出来,且此方法程序执行速度较慢,不到万不得已(如其他方法无法定位元素),不推荐使用之。
driver.find_element_by_xpath(xpath)driver.find_elements_by_xpath(xpath)
通过AndroidUiAutomator定位元素,通过Android UIAutomator类库去找元素
driver.find_element_by_android_uiautomator(uia_string)driver.find_elements_by_android_uiautomator(uia_string)
其中find_element是找寻某一个符合条件的元素,而find_elements是找寻所有符合条件的元素,并返回一个列表。

操作APP中的元素

通过前面两个步骤,好不容易告诉了Appium我们想要操作的元素后,那么问题来了,我们该如何操作已定位的元素呢?下面将会列举常用的操作。
点击控件:
driver.find_element_by_xxx(‘xxx’).click()
输入内容:
driver.find_element_by_xxx(‘xxx’). send_keys(‘xxx’)
从A点滑动至B点:
driver.swipe(start_x, start_y, end_x, end_y, duration)
清除输入的内容:
driver.find_element_by_xxx(‘xxx’). clear()
此元素用户是否可见:
driver.find_element_by_xxx('xxx').is_displayed()
此元素是否被选择:
driver.find_element_by_xxx('xxx').is_selected()
此元素是否可用:
driver.find_element_by_xxx('xxx').is_enabled()
获取元素左上角的坐标:
driver.find_element_by_xxx('xxx').location
当然,Appium不只可以完成上面的操作,它还包括了几乎所有的人为操作,如摇一摇、截图、缩放屏幕、打开通知栏等等。其他操作如果读者需要,可以查询对应语言依赖库中的源码得到,如Python的话就可以在webelement.py文件中找到。


  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值