首页 > 其他分享 >inspect元素定位

inspect元素定位

时间:2023-09-08 09:47:57浏览次数:30  
标签:定位 元素 text inspect 点击 html id

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

目前主流的工具有:

android uiautomatorviewer
weditor
appium inspect
这三种都不是特别好用,所以才会介绍三种一块辅助进行元素定位,本文主要介绍inspect

appium inspect

appium server

打开后,设置所需能力(就是我们代码中编写的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 time
 
from 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()

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

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

标签:定位,元素,text,inspect,点击,html,id
From: https://www.cnblogs.com/jds-49127/p/17686624.html

相关文章

  • 原地移除数组中的重复元素
    给你一个 升序排列 的数组 nums ,请你 原地 删除重复出现的元素,使每个元素 只出现一次 ,返回删除后数组的新长度。元素的 相对顺序 应该保持 一致 。然后返回 nums 中唯一元素的个数。考虑 nums 的唯一元素的数量为 k ,你需要做以下事情确保你的题解可以被通过:......
  • 在Canvas上进行文本输入及其它html元素操作
    问题使用canvas绘制了一个表格,想要在上面进行编辑操作,但canvas并不支持修改操作思路通过给html元素设置绝对定位,遮盖canvas上的指定位置,所有编辑操作都在元素上进行,也可以将元素的值绘制到canvas上,示例demo如下:点击查看代码<!DOCTYPEHTML><html><style></style><bodys......
  • Keil定位常量、变量到指定地址
    一、常量-ROM区域constcharVersion[]__attribute__((at(0x8001000)))={  'M','V','1','0','0'}; 二、变量-RAM区域intval__attribute__((section(".ARM.__at_0x20000004")))=0x00; 三、函数-ROM区域#pra......
  • 2.7 PE结构:重定位表详细解析
    重定位表(RelocationTable)是WindowsPE可执行文件中的一部分,主要记录了与地址相关的信息,它在程序加载和运行时被用来修改程序代码中的地址的值,因为程序在不同的内存地址中加载时,程序中使用到的地址也会受到影响,因此需要重定位表这个数据结构来完成这些地址值的修正。当程序需要被......
  • LeetCode347——前K个高频元素
    给你一个整数数组 nums 和一个整数 k ,请你返回其中出现频率前 k 高的元素。你可以按 任意顺序 返回答案。 示例1:输入:nums=[1,1,1,2,2,3],k=2输出:[1,2]示例2:输入:nums=[1],k=1输出:[1] 提示:1<=nums.length<=10e5k 的取值范围是 [......
  • Revit API创建几何实体Solid并找到与之相交的元素
    几何实体的创建方法之一:构成封闭底面,指定拉伸方向与拉伸高度。GeometryCreationUtilities//自创几何实体相交法[TransactionAttribute(Autodesk.Revit.Attributes.TransactionMode.Manual)]publicclassFindIntersectWallsByGeometry:IExternalCommand{publicResult......
  • element表单必填校验,并自动定位到必填项
    需求:1、elementformvolid必填提示框警告2、自动定位到首个未通过校验字段实现思路:1.validate校验需要给提交事件添加一个参数object;2.当校验不通过时收集所有未通过字段项提示信息,将其通过push方法添加到定义好的数组中(str);3.通过this.$refs[Object.keys(object)[0]]......
  • DSP集成麦克风阵列声源定位模组AR-1105​
    麦克风阵列声源定位模组AR-1105是采用DSP音频处理器集成麦克风阵列声源定位技术进行研发,模组具有全硬件集成.体积小巧,外围电路简洁,无需软件调试,易上手等优点的情况下同时保持反应灵敏,定位准确等特性.模组分为:声音定位核心主板麦克风阵列板声源定位LED显示板声音定位核心主板......
  • 【CSS】伪类选择器和伪元素选择器
    伪类选择器用于指定所选元素的特殊状态,参考https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-classes伪元素选择器允许你对被选择元素的特定部分修改样式,不会真的修改dom结构,参考https://developer.mozilla.org/zh-CN/docs/Web/CSS/Pseudo-elements<html><head>......
  • 在基于 HTML 的网页中嵌入 Flutter 元素?
    在基于HTML的网页中嵌入Flutter元素,可以通过使用Flutter的Web插件来实现。以下是基本的步骤:配置Flutter环境:确保已经安装并配置了Flutter开发环境,包括DartSDK和FlutterSDK。创建FlutterWeb项目:在命令行中使用fluttercreate命令创建FlutterWeb项目。进入......