Android原生应用和混合应用的辅助定位工具
在web测试中,可以使用F12辅助元素定位,但在app中没有这样的工具,需要安装第三方的工具
目前主流的工具有:
- android uiautomatorviewer
- weditor
- appium inspect
- chrome inspect 定位app中的web
- uc-devtool inspect 定位app中的web
这三种都不是特别好用,所以才会介绍三种一块辅助进行元素定位
1.1 uiautomatorviewer
这个工具是用我们安装的SDk工具里面自带的Android工具来定位的,这个工具并不需要我们自己安装,在我们打进adb环境的时候就已经下载好了
位置:就在我们自己的sdk目录下面的tools下面的根目录
我们要使用和这个工具,直接执行这个bat文件就可以了
执行后的界面:
接下来我们打开模拟器或者连接真机
3.1 appiun inspect的使用
前提已安装好appium程序,安装好安卓所需的环境 jdk sdk
1. 打开appium-doctor
2. 启动appium-service,点击 inspector,新版本的appium没有集成appium inspector,所以得另外下载
Appium Inspector,mac版,appium1.22版本后,Appium Inspector需要单独下载安装。
可通过地址下载或者点击原来的查看元素按钮直接打开下载地址,直接看readme上 写的安装版本
下载地址:https://github.com/appium/appium-inspector/releases
3.2启动Appium Server
cmd中输入命令
appium -p 4723 -U 127.0.0.1:62025 -bp > 4724
如果是GUI版本则填写方式如下
AppiumServer参数填写:
远程主机:需要填写AppiumServer服务的主机地址,默认127.0.0.1
远程端口:需要填写AppiumServer服务的主机端口,默认4723
远程路径:appium服务器的路径,默认填写/wd/hub
假如没有填写远程路径或者远程路径报错会提示Failed to create session. The requested resource could not be found, or a request was received using an HTTP method that is not supported by the mapped resource
比如:
appium服务的设置
点击之后,打开是这个页面。 要想启动Inspector 需要我们手动创建一个 session,其实也就是创建一个客户端和 appium server 连接。需要在Desired Capabilities 里面填入一些参数。设定以下这些信息。
platformName: 平台名称设置为Android
platformVersion:填写当前连接的Android设备的系统版本,必须正确
deviceName: 填写Android设备名称,不需要正确
app: 路径,从本地选择要测试应用的apk路径
appPackage: 测试app的package
appActivity: 测试app的StartActivity
unicodeKeyboard: 布尔值 true则禁用手机键盘
noReset: 布尔值true 则不重新安装apk,false则重新安装apk
newCommandTimeout: 6000
platformName Android
platformVersion 11
udid 平板ip:对应端口
连接平板 需要填写的内容如下:
{ "platformName": "Android", "platformVersion": "11", "udid": "192.168.85.148:5555" }
点击【Save AS】,设置一个名称保存一下方便下次使用。
- 保存之后可以去 Saved Capability Sets (1) 里面查看。
点击 StartSession 。这时候手机上会自动安装Appium Settings 应用(安装好不要卸载)
接着又安装一个io.appium.uiautomator2.server 应用(每次启动都会提示安装一次)
然后手机上开始安装Desired Capabilities 中设置的apk 文件
最后手机上启动安装成功的测试APP
3.3Inspector 功能
GUI
Inspector 启动成功后,界面如下
Appium会话可能需要一些时间来加载,尤其是在云服务上,所以请耐心等待。
当会话加载成功后,您的应用程序的屏幕截图(快照视图)将出现在左边。您可以在屏幕快照视图中使用鼠标来点击各种UI元素,将会看到它们突出显示。
Inspector窗口的中间是您的应用程序的层次结构,表示为XML。您可以通过单击它树节点,或者通过点击屏幕快照视图中的元素来导航这棵树。然后它们在视图中会被强调显示。在应用层次结构中会直接将元素的id也就是resource-id值标记在树上,这对于Appium定位元素很方便,可以快速看到元素是否有id。
当一个元素被突出显示时,它的信息会出现右侧的元素信息视图中。这个细节视图包括对元素的潜在操作,以及元素属性的表。这些属性将决定Appium定位元素的策略。
基本操作
刷新
当我们在手机上对APP进行操作后,Inspector窗口的屏幕截图不会自动更新,需要我们通过点击刷新按钮,更新应用的最新页面
操作回退
当我们想要查看返回上一个操作查看页面信息,可以通过点击back-按钮。此时Inspector窗口和手机都会同时回到上一个操作的界面。(等同于android手机上的返回键)
退出
当我们不再需要使用Inspector,就可以点击x关闭Inspector窗口(调用驱动程序)。退出并关闭Inspector
复制xml
如果我们需要保存应用当前界面的xml内容,可以点击COpy XML Source to Clipboard 将内容保存到粘贴板。
查看元素信息
当我们想要查看某一个元素的详细信息,首先需要点击select Elements 按钮,然后在屏幕截图中点击要查看的元素,最后在右侧的区域就可以看到元素的xpath,index,package,class,text,resource-id 等信息。
点击元素
选择一个元素后,还可以“点击”元素,当您使用一个元素执行Tap操作时,Inspector将发送命令到Appium,它将执行它。如果操作成功,左侧将生成一个新的屏幕截图,您将看到应用程序的更新状态和XML。如果不成功,您看到错误消息。
输入文本
选择一个元素后,还可以“发送内容”到元素(前提:它是一个输入框EditText)。同样Inspector将发送命令到Appium执行它
清空文本
选择一个元素后,还可以对元素“清空内容”(前提:它是一个输入框EditText)。同样Inspector将发送命令到Appium执行它
查找元素信息
如果我们想要通过元素的某一个属性值来查看它所对应的元素有哪些,可以点击search for element 按钮。 最常用的情况就是通过resource-id 或者 text 或者xpath 来判断属性值是否唯一对应一个元素。
步骤:
选择一个属性:id(resource-id),name(text),xpath,className(class)等
输入属性对应的值
点击Search
显示搜索结果
从上图可以看出id=com.zhihu.android:id/title的元素有三个。
Inspector窗口操作界面
点击 Tap By Coordinates按钮,我们就不需要在手机上点击操作,可以直接在屏幕截图上使用鼠标来点击元素,手机也会同步操作。
滑动屏幕
如果想在Inspector窗口的屏幕截图中执行一个滑动屏幕的操作,使用鼠标无法完成,那么我们可以通过swipe by coordinates 按钮实现。 步骤
先点击滑动的起始位置(会显示一个圆圈)
在滑动结束的位置点击一下(会显示一个圆圈)
这时候就开始执行滑动操作
5.1 uc-devtool inspect
webview元素定位工具
官网介绍::https://dev.ucweb.com/docs/pwa/docs-zh/xy3whu
下载地址:https://plus.ucweb.com/download
下载对应版本即可.
下载uc-devtools,解压安装后,设置本地 Devtools Inspector UI资源。
然后在Home中,点击inspect即可看到html页面元素。
UC-devtools的使用
前提:手机需要打开USB调试模式,被测app需要开启webview的调试模式
1.设置为本地 Devtools Inspector UI 资源
2,打开app中的webview页面,可见
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】凌霞软件回馈社区,博客园 & 1Panel & Halo 联合会员上线
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】博客园社区专享云产品让利特惠,阿里云新客6.5折上折
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
2021-08-03 python变量循环赋值
2021-08-03 Scrum五个事件
2021-08-03 IDE Eval Resetter:JetBrains 全家桶无限试用插件
2018-08-03 【linux】netstat 详解
2018-08-03 【linux】dpkg 命令使用说明