Appium+python自动化(九)- 定位元素工具(义结金兰的两位异性兄弟)(超详解) 密码保护

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入

简介

   环境搭建好了,其他方面的知识也准备的差不多了,那么我们就开始下一步元素定位,元素定位宏哥主要介绍如何使用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发现没有设备名字报错

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

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

 每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/28687.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

鸿蒙轻内核A核源码分析系列四(2) 虚拟内存

本文我们来熟悉下OpenHarmony鸿蒙轻内核提供的虚拟内存(Virtual memory)管理模块。 本文中所涉及的源码,以OpenHarmony LiteOS-A内核为例,均可以在开源站点 https://gitee.com/openharmony/kernel_liteos_a 获取。如果涉及开发板…

Aigtek高压放大器在柔性爬行机器人驱动性能研究中的应用

实验名称:柔性爬行机器人的材料测试 研究方向:介电弹性体的最小能量结构是一种利用DE材料的电致变形与柔性框架形变相结合设计的新型柔性驱动器,所谓最小能量是指驱动器在平衡状态时整个系统的能量最小,当系统在外界的电压刺激下就…

10.Docker Compose容器编排

文章目录 Compose简介安装和卸载步骤核心概念compose文件两要素 使用步骤Compose常用命令微服务测试本地编码打包编写Dockerfile文件构建镜像 不使用Compose调试使用Compose调试WordPress测试验证增量更新 Compose简介 ​ docker建议我们每一个容器中只运行一个服务,因为docke…

Memcached深度解析:打造闪电般的数据存储

Memcached是一个高性能的分布式内存对象缓存系统,通过在内存中缓存数据和对象来减少访问数据库的次数,从而加速动态数据库驱动的网站。本文将全面介绍Memcached的基本概念、使用方法、主要作用以及注意事项。 一、Memcached简介 1. Memcached的起源 Me…

开源复刻apple 数学笔记;纯C++实现了ChatGLM系列模型;腾讯混元文生图模型发布新版本并开源训练代码

✨ 1: AI Math Notes AI Math Notes 是一个交互式绘图应用,可绘制并计算数学方程。 AI Math Notes 受到Apple在WWDC 2024上的“Math Notes”演启发,开发的一个互动式绘图应用程序,用户可以在画布上绘制数学方程。一旦方程被绘制完成&#x…

Win11升级24H2出现绿屏怎么办?这些方法帮你解决!

在Win11电脑操作中,用户为了体验24H2版本推出的新功能,所以要把系统版本升级为24H2版本。但升级过程中电脑却出现了绿屏问题,不清楚要怎么操作才能解决绿屏的问题?接下来小编给大家分享几种简单有效的解决方法,让大家能…

CSRF、XSS、盗链攻击解释

CSRF(Cross-Site Request Forgery,跨站请求伪造) CSRF是什么 CSRF 是一种攻击方式,攻击者通过利用用户在已认证的应用程序中的身份,伪造用户的请求来执行未经授权的操作。 这种攻击可以导致用户在不知情的情况下完成…

氧化铈稳定氧化锆(Ce-TZP)性能优成本低 市场发展潜力较大

氧化铈稳定氧化锆(Ce-TZP)性能优成本低 市场发展潜力较大 CeO2稳定ZrO2,氧化铈稳定氧化锆,英文缩写Ce-TZP,一种陶瓷材料,是以氧化锆为基体,以氧化铈为稳定剂,制造而成的增韧陶瓷。 氧…

芯片封测从入门到精通

文章目录 📑前言一、作者简介二、书籍亮点三、内容简介四、适读人群 📑前言 在科技日新月异的今天,芯片作为现代电子设备的核心部件,其性能与可靠性直接决定了整个产品的竞争力。而芯片封测,作为确保芯片性能与可靠性…

Aspice介绍——测试流程

文章目录 ASPICE简介一、V字模型的示意二、测试领域2.1 SWE.6:软件合格性测试过程目的过程成果基本实践(BP) 2.2 SYS.4:系统集成和集成测试过程目的过程成果基本实践(BP) 2.3 SYS.5:系统合格性测试过程目的…

【Java】已解决java.lang.NullPointerException异常

文章目录 一、问题背景二、可能出错的原因三、错误代码示例四、正确代码示例五、注意事项 已解决java.lang.NullPointerException异常 一、问题背景 在Java编程中,java.lang.NullPointerException(空指针异常)是一种常见的运行时异常。当应…

一些个人电脑用的小工具软件

1 个人电脑信息管理 如下; 整理自己的电脑信息;录入,保存,查询;添加和更新界面如下, 每次添加、更新之后重新点一下菜单的浏览; 下载, https://download.csdn.net/download/bcb…

SpringBoot+Vue小区物业管理系统 附带详细运行指导视频

文章目录 一、项目演示二、项目介绍三、运行截图四、主要代码1.用户登录代码2.查询小区信息代码3.保存缴费信息代码 一、项目演示 项目演示地址: 视频地址 二、项目介绍 项目描述:这是一个基于SpringBootVue框架开发的小区物业管理系统。首先&#xf…

深入探索 Rust 的 clap 库:命令行解析的艺术

版本声明 Rust: 1.76clap: 4.5.1clap_complete 4.5.1rpassword: 7.3.1 结论先行 本文将从 CLI(Command Line Interface)命令行工具的概述讲起,介绍一个优秀的命令行工具应该具备的功能和特性。然后介绍 Rust 中一个非常优秀的命令行解析工…

《Windows API每日一练》4.3 点和线的绘制

理论上,所有的图形设备驱动程序所需要的就是SetPixel函数和GetPixel函数。其余的一切都可以使用在GDI模块中实现的更高层的例程来处理。例如,画一条线,GDI可以不停地调整x和y坐标,然后连续调用多次SetPixel函数来实现。 事实上&a…

2024 年最新 windows 操作系统部署安装 redis 数据库详细教程(更新中)

Redis 数据库概述 Redis 是一个开源的,内存中的数据结构存储系统,它可以用作数据库、缓存和消息中介。Redis(Remote Dictionary Server ),即远程字典服务,是一个开源的使用ANSI C语言编写、支持网络、可基…

数据通信与网络(二)

计算机网络的性能指标 包括速率、带宽、吞吐量、时延、时延带宽积和利用率。 还有一些非性能指标:如费用、质量、标准化、可靠性、可扩展性、可升级性和可维性。 一、速率 指计算机网络中的主机在信道上单位时间内传送数据量,又称数据率(data rate)或…

每日AI资讯-20240616

1. AI漫画角色一致性大突破 由中山大学和联想团队联合提出AutoStudio,它是一个无需训练的多智能体协同框架。AutoStudio采用基于大语言模型的三个智能体来处理交互,并使用基于扩散模型的Drawer生成高质量图像。实验中,AutoStudio无论是在定量…

腾讯地图避坑-获取地图点击点的经纬度

map.on(click,(evt)>{console.log("evt",evt)let lat evt.latLng.getLat();//lat 获取let lng evt.latLng.getLng();//lng 获取console.log("evt.latLng-有效方式",evt.latLng)console.log("evt[latlng]-无效方式",evt[latlng])})

PiDiNet推理手顺

GitHub链接 https://github.com/hellozhuo/pidinet 运行环境 Pyhton 3.8 filelock3.14.0 fsspec2024.5.0 imageio2.34.1 intel-openmp2021.4.0 Jinja23.1.4 lazy_loader0.4 MarkupSafe2.1.5 mkl2021.4.0 mpmath1.3.0 networkx3.1 numpy1.24.4 open…