简介

  环境搭建好了,其他方面的知识也准备的差不多了,那么我们就开始下一步元素定位,元素定位宏哥主要介绍如何使用uiautomatorviewer,通过定位到页面上的元素,然后进行相应的点击等操作. 此外在介绍另一款工具:Inspector。

uiautomatorviewer是android-sdk自带的一个元素定位工具,非常简单好用,使用uiautomatorviewer,你可以检查一个应用的UI来查看应用的布局和组件以及相关的属性。

  那么宏哥先来给各位小伙伴们介绍大哥--uiautomatorviewer,再来介绍小弟--Inspector。

一、大哥--uiautomatorviewer

  大哥人物简介:

  大哥是皇族后裔,但是比刘皇叔强多了。人家有一个好爹--Google。

  Android 4.1发布的,uiautomator是用来做UI测试的。也就是普通的手工测试,点击每个控件元素 看看输出的结果是否符合预期。比如 登陆界面 分别输入正确和错误的用户名密码然后点击登陆按钮看看是否能否登陆以及是否有错误提示等。

功能性或者黑盒UI测试不需要测试人员了解程序如何实现的,只需要验证各种操作的结果是否符合预期即可。这样的测试可以分离团队的开发人员和测试人员。大家各干各的没有太多的交集。

  常用的UI测试方式就是人工验证啦,就是测试人员拿着各种手机分别安装要测试的程序然后看看是否能正确完成各种预定的功能。但是这种验证方式是非常耗时间的,每次回归都要全部验证一边,并且还容易出现人为错误。比较高效和可靠的UI测试方式就是自动化测试。自动化UI测试创建测试代码来执行测试任务,各种测试任务分别覆盖不同的使用场景,然后使用测试框架来运行这些测试任务。而uiautomator 就是你的自动化UI测试工具。

Android SDK在4.1中提供了如下工具来支持UI自动化测试:

  • uiautomatorviewer – 一个图形界面工具来扫描和分析应用的UI控件。
  • uiautomator – 一个测试的Java库,包含了创建UI测试的各种API和执行自动化测试的引擎。

要大哥出山也就是使用该工具,需要满足如下条件:

  • Android SDK Tools, Revision 21 or higher
  • Android SDK Platform, API 16 or higher

一、启动uiautomatorviewer.bat

两种启动方法:

第一种方法:

1、打开目录D:\software\android-sdk-windows\tools

2、双击启动,启动之后出现如下界面

 
第二种方法:

1、如果不喜欢双击启动的话,也可以在cmd里面通过指令启动

先cd到tools目录下,然后输入uiautomatorviewer.bat回车后启动服务

二、连接手机

1、cmd打开输入adb devices,确认手机已连上(以夜神模拟器为例)

2、打开手机淘宝页面,让屏幕处于点亮状态

3、点左上角安卓机器人按钮Devices Screenshot按钮刷新页面

 

三、定位元素

1、移动鼠标到需要定位的元素上,如搜索输入框

 

2、右下角可以看到元素对应的属性

text:好沙发需要好坐垫

resource-id:com.taobao.taobao:id/home_searchedit

class:android.widget.EditText

四、点搜索框

1、前面一篇启动app后,休眠五秒,等待页面加载完成

2、通过id来定位到搜索框,然后点击

五、参考代码

# coding=utf-8
# 1.先设置编码,utf-8可支持中英文,如上,一般放在第一行# 2.注释:包括记录创建时间,创建人,项目名称。
'''
Created on 2019-6-24
@author: 北京-宏哥   QQ交流群:707699217
Project:学习和使用定位元素工具
'''
# 3.导入模块
from appium import webdriver
import time
desired_caps = {}
desired_caps['platformName'] = 'Android'   #android的apk还是IOS的ipa
desired_caps['platformVersion'] = '8.0'  #android系统的版本号
desired_caps['deviceName'] = '127.0.0.1:62001'    #手机设备名称,通过adb devices  查看
desired_caps['appPackage'] = 'com.taobao.taobao'  #apk的包名
desired_caps['appActivity'] = 'com.taobao.tao.welcome.Welcome'  #apk的launcherActivity
#desired_caps['unicodeKeyboard'] = True   #使用unicodeKeyboard的编码方式来发送字符串
#desired_caps['resetKeyboard'] = True   #将键盘给隐藏起来
driver = webdriver.Remote('http://127.0.0.1:4723/wd/hub', desired_caps) #启动服务器地址,后面跟的是手机信息
# 休眠五秒等待页面加载完成
time.sleep(5)driver.find_element_by_id("com.taobao.taobao:id/home_searchedit").click()# driver.quit()

六、元素定位

1、appium的webdriver提供了11种元素定位方法,在selenium的基础上扩展了三个,可以在pycharm里面输入driver.find_element_by然后会自动匹配出来

2、多的三种如下,在后面的会详细介绍

driver.find_element_by_accessibility_id()

driver.find_element_by_android_uiautomator()

driver.find_element_by_ios_uiautomation()

(第三个是ios的可以暂时不用管)

二、小弟--Inspector

   小弟人物简介:

  小弟不是很牛叉,但是小弟的存在必定有小弟存在的必要,之前看了好多文章都要放弃小弟,我觉地不要放弃,没准小弟可以替大哥大哥挡刀呢,呵呵,说笑了,毕竟过河的卒子可以当车!!!

  Appium Inspector是appium自带的一个元素定位工具,前边介绍了如何使用uiautomatorviewer进行元素定位。这里就学习Appium Inspector是如何定位的。

  Appium Inspector 对于测试的同学不得不说是一个神器,可以查询到我们需要定位的元素的 id 等各种信息 ,还可以 录制用户行为,翻译成脚本。逆天的是可以翻译成多种语言的脚本。这并不意味着测试的同学可以不用学习语言和编程了,因为机器翻译出的脚本一般很难一次执行成功,其中很可能还需要经过人工修改后才能顺利执行,但是这已经可以为测试脚本的编写带来很大的遍历,所以 Appium Inspector 还是值得我们去学习和使用。

一、设置appium

1、先不要启动appium,因为启动以后就不能操作appium设置界面,必须在未启动的时候进行操作

2、点开android setting界面(机器人图标)

3、勾选Application Path,添加被测app的路径

4、Devices name处添加设备名称(adb devices查看到的)

(注意:通过这种方法也可查看到apk的包名和Launch Activity)

 

二、开启appium

1、手机确保连接电脑(adb devices查看)(仍然以夜神模拟器为例)

2、点appium右上角三角形图标,会启动服务

3、这时候可以看到手机上安装淘宝应用,并会启动淘宝

4、点appium右上角的搜索图标

5、点Inspector Window界面的 Refresh 按钮刷新界面

三、Ispector Window

1、手机上打开需要单位元素的界面,然后点Refresh按钮刷新

2、左边菜单树,可以挨个点开

3、如果想单位界面上的“是”和“否”按钮,从菜单树就可以看到这两个元素的结构

四、查看属性

1、选中左侧菜单树对应的元素,在右下角查看对应属性

五、常见异常

1、在使用过程中,你会发现经常会报以下这个错误

2、每次启动都会给你手机上重新安装一次应用

3、并且不能用鼠标指定某个元素,没有uiautomatorviewer使用方便

(要是以上三种问题你都遇到了,怎么办???那就放弃吧!!!)​

相信很多人在使用过程中,都会遇到中文无法输入问题,宏哥在后续文章里会手把手教大家如何输入中文。

三、小结

Android SDK中的UIAutomator中本身是不支持网页中的UI元素定位,下面介绍几种常用的定位app内部的网页的UI元素的方法。

一、使用chrome浏览器调试移动端网页

这是使用最多的一种方法。首页确保自己的手机已经跟电脑连接且处于开发者模式。

打开PC端的谷歌浏览器,输入chrome://inspect/#devices,会看到下图所示界面:

点击需要测试的网页下方的inspect,且保证手机界面停留在那个页面。

这样打开后是不是就熟悉了,点击上方红色标记的就可以操作进行定位了~~~

 二、Android手机的铺助功能带有TalkBack

之前一直用的是谷歌的方法,但是最近发现使用talkback可以直接用UIAutomator定位元素。

Android系统一般自带一个TalkeBack功能。但这里千万要注意:打开之后整个系统的操作都变得不同了!!滑动界面需要两个手指,单击变成双击。打开之后用UiAutomatorViewer获取webview界面的内容,你就会发现原来webview里面获取不到的ui元素,现在已经可以可以获取到了。即使现在你关掉TalkBack,也能获取到,除非重启手机才会回到不能获取的状态,所以开启后我们可以立即关闭,以方便操作。有些手机没有talkBack的可以去应用市场下载。

功能路径:
       原生系统:设置 – 辅助功能(Accessibility) – TalkBack
       华为EMUI系统:设置 – 高级设置 – 辅助功能 – TalkBack

三、宏哥在小弟哪里遇到的问题

查看appium日志的error发现没有设备名字报错

将夜神模拟器的名字加上就成功了

宏哥不能保证所整理都符合大家的口味,但我能保证每一篇都是用心去写和用心去整理,我始终认同“分享的越多,你的价值增值越大”,欢迎大家关注我的博客和个人公众号的技术分享。在分享中进步,越努力越幸运,期待我们都有美好的明天!

支持宏哥的朋友们和宏哥的宏粉记得点波推荐哦,您的肯定就是我进步的动力。鄙人先在这里给您道谢了,谢您嘞~~

个人公众号(因为许多文章都被搬到别人的公众号里了,还是原创,所以宏哥果断也开一个公众号。打算与博客园文章同步,希望大家随时随地学习与进步):

微信群(因为有人给我发短消息说公司不让用QQ,就帮忙建立一个微信群,欢迎加入讨论和交流)

我的博客即将同步至腾讯云+社区,邀请大家一同入驻:https://cloud.tencent.com/developer/support-plan?invite_code=2k3h2stkvscgc

转载于:https://www.cnblogs.com/du-hong/p/11056638.html

Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解)...相关推荐

  1. 柠檬班python自动化视频百度云_python自动化装逼指南1-装饰器详解

    这篇文章由柠檬班Python全栈自动化学员 重庆--圆滚滚童鞋分享的一篇技术共享文章. 话不多说,直接上文章 一. 装饰器原则: 1. 不能修改被装饰函数的源代码 2. 不能修改被装饰函数的调用方法 ...

  2. [Python知识图谱] 三.Jieba工具中文分词、添加自定义词典及词性标注详解

    本系列文章主要结合Python语言实现知识图谱构建相关工程,具有一定创新性和实用性,非常希望各位博友交流讨论,相互促进成长.前面两篇文章详细讲解了哈工大Pyltp工具,包括中文分词.词性标注.实体识别 ...

  3. java接口自动化测试的搭建_java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)...

    简介 了解什么是接口和为什么要做接口测试.并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程.其实这些基本上在python接口自动化的文章中已经详细的介绍过了,不清楚的可以过去看看.了 ...

  4. java接口自动化(一) - 接口自动化测试整体认知 - 开山篇(超详解)

    简介 了解什么是接口和为什么要做接口测试.并且知道接口自动化测试应该学习哪些技术以及接口自动化测试的落地过程.其实这些基本上在python接口自动化的文章中已经详细的介绍过了,不清楚的可以过去看看.了 ...

  5. python与anaconda安装(先安装了python后安装anaconda,基于python已存在的基础上安装anaconda)——逼死强迫症、超详解

    目录 一.安装python(python3.7.4) 1.下载 (1)下载1(32位) (2)下载2(64位) 2.安装 3.配置python环境变量 4.检验python 二.安装anaconda( ...

  6. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解

    简介 你有道灵光从天灵盖喷出来你知道吗,年纪轻轻就有一身横练的筋骨,简直百年一见的练武奇才啊,如果有一天让你打通任督二脉,那还不飞龙上天啊.正所谓我不入地狱谁入地狱,警恶惩奸维护世界和平这个任务就交个 ...

  7. Appium+python自动化(十)- 元素定位秘籍助你打通任督二脉 - 上卷(超详解)

    简介 你有道灵光从天灵盖喷出来你知道吗,年纪轻轻就有一身横练的筋骨,简直百年一见的练武奇才啊,如果有一天让你打通任督二脉,那还不飞龙上天啊.正所谓我不入地狱谁入地狱,警恶惩奸维护世界和平这个任务就交个 ...

  8. Appium+Python appium启动夜神模拟器定位元素(三)

    ① 目的 使用appium启动夜神模拟器定位元素 ② 环境 Python+Appium+Android模拟器 ③配置启动项 1.platformName:Android //设备型号 2.platfo ...

  9. Appium+python自动化-启动app

    Appium+python自动化-启动app 环境已经搭建好了,接下来就是需要启动APP,如何启动app呢?首先要获取包名,然后获取launcherActivity.获取这两个关键东西的方法很多,这里 ...

最新文章

  1. java File 的相对路径
  2. GO语言基础map与函数
  3. 【模拟】交换(jzoj 1518)
  4. 【LeetCode笔记】70. 爬楼梯(Java、动态规划)
  5. python寻找屏幕上的特定字符_库Turtle:用Python指挥小海龟在屏幕上绘图,流行的儿童编程...
  6. FB接连出事儿?上亿用户记录在亚马逊云服务器上就公之于众了……下滑到第七?领英说苹果怎么就不受雇员欢迎了呢? | 极客头条...
  7. linux rpm包,安装路径查看及改变rpm包默认安装路径
  8. 宅在家里写数据库中函数应用
  9. 10分钟利用django搭建一个博客
  10. Cesium:搭建运行环境
  11. 自动类型转化的鲜为人知的陷阱
  12. mysql 循环语句语法_MySQL循环语句之while循环测试
  13. 汇编语言INC DEC JGE JG JLE JL JNE JE 都是什么意思
  14. systemd-journald日志进程介绍
  15. [python]用flask框架搭建微信公众号的后台
  16. 前端 100 问:你会多少?
  17. 科技文章也可以非常的文采对立统一描述的简洁明了
  18. 坐标移动c语言,C语言 坐标移动详解及实例代码
  19. 编译 文件“libboost_log-vc120-mt-sgd-1_59.lib”
  20. 利用Ghost做硬盘对拷的方法

热门文章

  1. Gen8 ESXi 6.5 硬盘RDM 直通
  2. html5 colgroup标签,htmlcolgroup标签的使用与定义
  3. Node.js下forever使用
  4. RTSP 流媒体测试地址
  5. 我的ACM知识树总结
  6. 亚马逊卖家账号多人免登录免二次验证,买家号Cookies批量登录,cookie管理,亚马逊Cookie账号怎么导入导出
  7. python之逗号的用法(转载自codeDRT)
  8. 一个基于X86的小型中文操作系统的设计、编码与调试http://www.mcuol.com/Tech/207/1289.htm
  9. oracle 僵死的进程,【原】杀掉oracle僵死进程
  10. ubuntu升级内核到指定版本