appium-3种元素定位工具

2023-11-10 22:30
文章标签 工具 定位 appium 种元素

本文主要是介绍appium-3种元素定位工具,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

在web测试中,可以使用F12辅助元素定位,但在app中没有这样的工具,需要安装第三方的工具

目前主流的工具有:

  • android uiautomatorviewer
  • weditor
  • appium inspect

这三种都不是特别好用,所以才会介绍三种一块辅助进行元素定位

1.appium inspect

打开后,设置所需能力(就是我们代码中编写的cpas内容),设置完成后点击【启动会话】按钮

可以看到跟我们手机端上的首页是一致的,点击左边的某个元素,可以显示出对应的元素相关内容

可以看到App Source中一层一层嵌套很多层内容,这个是xml格式代码,跟html树型结构类似

xml和html区别:

  • 第一点:html是用来展示内页,xml格式展示的是安卓页面,
  • 第二点:xml中的标签名称是可以随便命名的,而html中每个标签名称是固定好的,作用也是固定好的

安卓的源码结构:

元素属性:

  • emementid 每个元素都有一个,没太大作用
  • index 索引
  • package 包名
  • class 是元素种类,对应于html的tagname
  • text 属于元素的属性
  • resource-id 不一定唯一(柠檬班app中菜单的id都一样)                            
  • checkable 可以被选中
  • clickable 可以被点击
  • focusable 可以放光标、文本或输入框
  • long-clickable 可以长点击
  • password 星号显示
  • scrollable 可以上下滚动
  • bounds 边界坐标值,[300,1500][600,1600],类似于html的盒模型
  • displayed 是不是可以显示
  • content-desc 声音的时候使用

元素布局和控件:

  • imageview 存放图片 ==> tagname (<android.view.imageview>)
  • textview 文本标签
  • layout 用来布局 相当于html中的div
  • button 按钮
  • checkbox  多选框
  • switch 开关(如手机中设置的开关,蓝牙、wifi等开关)
  • ratingbar 评分条
  • seekbar 拖动条(音量条)
  • toast 弹出
  • webview 显示网页,类似iframe,在一个网页中嵌套另一个网页
  • 原生空间里面套网页
  • 其他组件很多

 元素定位注意项:

  • id属性:几乎每个元素都有id属性
  • 每个元素的属性都是固定的                                                                  
  • class属性:指的不是web当中的class,而是指的是组件类型(ImageView,TextView 标签名称)
  • text属性:app中编写xpath表达式://*[@text='']或//*[contains(@text='')]                                                    html中编写xpath表达式://*[text()='']或//*[contains(text(),'')]
  • resource-id:com.lemon.lemonban:id/navigation_my(一般来说,元素中都会有resource-id,但在app当中不一定是唯一的,可以重复的)
  • 如果resource-id不唯一,尝试定位父级元素

如何搜索元素:

点击某个元素后,复制id,点击【搜索元素】按钮

选择定位策略id,粘贴id,点击【查找】按钮 

选中返回的元素,点击【点击元素】按钮,可以操作跳转到对应页面 

同样使用xpath表达式也可以查找到元素并进行点击

appium inspect 中还有录制功能,也没太大作用,比较鸡肋,可以转换成python语言,来提示如何编写元素定位

使用python编写代码如下:

import timefrom appium.webdriver import Remote# 启动一次请求
# 1.指明需要连接的服务地址和端口号
# 2.You must include a platformName capability
caps = {"platformName": "Android","udid": "emulator-5554","appPackage": "com.lemon.lemonban","appActivity": ".activity.WelcomeActivity"}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=caps)
# 设置隐性等待
driver.implicitly_wait(10)
# 查找元素
# id查找
# driver.find_element('id', 'com.lemon.lemonban:id/navigation_my')
# xpath查找
el = driver.find_element('xpath', '//*[@resource-id="com.lemon.lemonban:id/navigation_my"]')
el.click()
time.sleep(3)
driver.quit()

元素定位优先使用什么方法:

  1. 优先使用id,id不是唯一的 (appium inspect 元素搜索)
  2. xpath:组合使用id和其他属性(text,索引)

2.android uiautomatorviewer

这个工具要比appium inspectg速度快很多,打开方式如下:找到安卓SDK的安装路径-->tools-->bin-->uiautomatorviewer.bat,双击打开,还可以创建快捷方式放到桌面,方便打开

优点:比appium inspect 速度快

缺点:不能验证元素表达式是不是唯一的

3.weditor 

weditor是python的第三方库,所以要安装:pip install weditor

缺点:不能和appium同时打开(可以跟airtest一块使用)

安装完成之后,在python命令窗口中输入weditor回车,会自动代开网页如下(如果打开的页面连接不上,提示服务错误之类的,关闭重新输入命令 python -m weditor)

选择系统,默认是安卓,然后输入设备名称,点击连接按钮即可,如果切换了页面可以,点击刷新页面按钮,点击某个元素,会显示对应的内容,还显示出了xpath表达式

总结:三种元素定位工具各有各的优点和缺点,注意事项一定要三再记住,我一开始打开weditor又忘记关闭appium,就不能使用,想使用哪个工具看自己的选择

4. appium客户端和selenium为何如此相似

点击看一下Remote的源码,可以看到是调用的WebDriver类,但为什么又叫Remote,因为进行了重命名,点击看一下webdriver的源码

appium中,WebDriver类中继承了很多类,最重要的是AppiumSearchContext类,点击查看源码

AppiumSearchContex类,又继承了很多类,其中重要的是WebDriver.Remote,点击Remote查看源码

实际上继承的是WebDriver类,下面有很多方法

最后可以看到Remote类的路径如下:

点击selenium中的webdriver查看源码,可以看到也是进行了重命名Chrome

点击import后面的WebDriver查看源码,可以看到跟appium的还是不一样的

点击RemoteWebDriver类查看源码,可以看到跟appium最后继承的类是一样的

 最后可以看到WebDriver类的路径如下:

 

放到一块可以看到,两个路径是一模一样的,所以说Chrome跟Remote转来转去,继承的是同一个父类WebDriver,所以有好多方法的用法跟selenium中一样

这篇关于appium-3种元素定位工具的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/385696

相关文章

无人叉车3d激光slam多房间建图定位异常处理方案-墙体画线地图切分方案

墙体画线地图切分方案 针对问题:墙体两侧特征混淆误匹配,导致建图和定位偏差,表现为过门跳变、外月台走歪等 ·解决思路:预期的根治方案IGICP需要较长时间完成上线,先使用切分地图的工程化方案,即墙体两侧切分为不同地图,在某一侧只使用该侧地图进行定位 方案思路 切分原理:切分地图基于关键帧位置,而非点云。 理论基础:光照是直线的,一帧点云必定只能照射到墙的一侧,无法同时照到两侧实践考虑:关

高效录音转文字:2024年四大工具精选!

在快节奏的工作生活中,能够快速将录音转换成文字是一项非常实用的能力。特别是在需要记录会议纪要、讲座内容或者是采访素材的时候,一款优秀的在线录音转文字工具能派上大用场。以下推荐几个好用的录音转文字工具! 365在线转文字 直达链接:https://www.pdf365.cn/ 365在线转文字是一款提供在线录音转文字服务的工具,它以其高效、便捷的特点受到用户的青睐。用户无需下载安装任何软件,只

【Linux 从基础到进阶】Ansible自动化运维工具使用

Ansible自动化运维工具使用 Ansible 是一款开源的自动化运维工具,采用无代理架构(agentless),基于 SSH 连接进行管理,具有简单易用、灵活强大、可扩展性高等特点。它广泛用于服务器管理、应用部署、配置管理等任务。本文将介绍 Ansible 的安装、基本使用方法及一些实际运维场景中的应用,旨在帮助运维人员快速上手并熟练运用 Ansible。 1. Ansible的核心概念

超强的截图工具:PixPin

你是否还在为寻找一款功能强大、操作简便的截图工具而烦恼?市面上那么多工具,常常让人无从选择。今天,想给大家安利一款神器——PixPin,一款真正解放双手的截图工具。 想象一下,你只需要按下快捷键就能轻松完成多种截图任务,还能快速编辑、标注甚至保存多种格式的图片。这款工具能满足这些需求吗? PixPin不仅支持全屏、窗口、区域截图等基础功能,它还可以进行延时截图,让你捕捉到每个关键画面。不仅如此

PR曲线——一个更敏感的性能评估工具

在不均衡数据集的情况下,精确率-召回率(Precision-Recall, PR)曲线是一种非常有用的工具,因为它提供了比传统的ROC曲线更准确的性能评估。以下是PR曲线在不均衡数据情况下的一些作用: 关注少数类:在不均衡数据集中,少数类的样本数量远少于多数类。PR曲线通过关注少数类(通常是正类)的性能来弥补这一点,因为它直接评估模型在识别正类方面的能力。 精确率与召回率的平衡:精确率(Pr

husky 工具配置代码检查工作流:提交代码至仓库前做代码检查

提示:这篇博客以我前两篇博客作为先修知识,请大家先去看看我前两篇博客 博客指路:前端 ESlint 代码规范及修复代码规范错误-CSDN博客前端 Vue3 项目开发—— ESLint & prettier 配置代码风格-CSDN博客 husky 工具配置代码检查工作流的作用 在工作中,我们经常需要将写好的代码提交至代码仓库 但是由于程序员疏忽而将不规范的代码提交至仓库,显然是不合理的 所

10个好用的AI写作工具【亲测免费】

1. 光速写作 传送入口:http://u3v.cn/6hXWYa AI打工神器,一键生成文章&ppt 2. 讯飞写作 传送入口:http://m6z.cn/5ODiSw 3. 讯飞绘文 传送入口:https://turbodesk.xfyun.cn/?channelid=gj3 4. AI排版助手 传送入口:http://m6z.cn/6ppnPn 5. Kim

分享5款免费录屏的工具,搞定网课不怕错过!

虽然现在学生们不怎么上网课, 但是对于上班族或者是没有办法到学校参加课程的人来说,网课还是很重要的,今天,我就来跟大家分享一下我用过的几款录屏软件=,看看它们在录制网课时的表现如何。 福昕录屏大师 网址:https://www.foxitsoftware.cn/REC/ 这款软件给我的第一印象就是界面简洁,操作起来很直观。它支持全屏录制,也支持区域录制,这对于我这种需要同时录制PPT和老师讲

生信圆桌x生信分析平台:助力生物信息学研究的综合工具

介绍 少走弯路,高效分析;了解生信云,访问 【生信圆桌x生信专用云服务器】 : www.tebteb.cc 生物信息学的迅速发展催生了众多生信分析平台,这些平台通过集成各种生物信息学工具和算法,极大地简化了数据处理和分析流程,使研究人员能够更高效地从海量生物数据中提取有价值的信息。这些平台通常具备友好的用户界面和强大的计算能力,支持不同类型的生物数据分析,如基因组、转录组、蛋白质组等。

js定位navigator.geolocation

一、简介   html5为window.navigator提供了geolocation属性,用于获取基于浏览器的当前用户地理位置。   window.navigator.geolocation提供了3个方法分别是: void getCurrentPosition(onSuccess,onError,options);//获取用户当前位置int watchCurrentPosition(