在web测试中,可以使用F12辅助元素定位,app中没有这样的工具,需要安装第三方的工具,目前主流的工具有:
1.appium inspect
是appium服务内置的工具,点击搜索按钮即可打开appium inspect
inspect配置界面,Desired Capabilities参数与caps参数一致,配置好后另存为即可,方便下次直接使用。
其中App Source 是源码,简单了解下安卓的源码结构:
- index 索引
- text,属于元素的属性,@text获取.text,html中使用text()获取文本
- resource–id,不一定唯一,元素的id属性,几乎每个元素都有id属性,如果id不唯一,可以尝试定位父级元素或子级元素
- class 是元素种类,指的不是web当中的class,指的是组件类型,ImageView,TextView,标签的名称,对应于html的tagname
- bounds,边界坐标值,类似于html的盒模型
- content–desc,声音的时候使用
- checkable,可以被选中
- focusable,可以放光标,文本或者输入框
- 每个元素的属性都是固定的
- imageview==》类似于html中的image标签,tagname
- textview,显示文本的标签
- layout,相当于html中的div,用于排版
- button,按钮
- checkbox,多选
- switch,开关
- ratingbar,评分条
- seekbar,拖动条
- toast 弹出
- webview(显示网页),类似于html中的iframe,在一个网页当中嵌套另一个网页
- 原生控件里面套网页
- 其他组件很多
除appium框架外,还有其他框架可以实现APP端的自动化测试。
除appium框架外,还可以了解下uiautomator2框架。
uiautomator2 是一个可以使用Python对Android设备进行UI自动化的库。其底层基于Google uiautomator,Google提供的uiautomator库可以获取屏幕上任意一个APP的任意一个控件属性,并对其进行任意操作。
可以自行了解:GitHub – openatx/uiautomator2: Android Uiautomator2 Python Wrapper
GitHub – AirtestProject/Airtest: UI Automation Framework for Games and AppsAirtest是一个跨平台的UI自动化测试框架,适用于游戏和App。
官方文档:欢迎来到Airtest官方文档! — airtest 文档
可以自行了解:GitHub – AirtestProject/Airtest: UI Automation Framework for Games and Apps
2.元素定位辅助工具
本地位置:D:Program Filesandroid_sdktoolsbinuiautomatorviewer.bat
用法基本和appium inspect相似,但不需要配置参数,然后启动比较快,但不能验证元素定位表达式是否唯一。
3.appium inspect工具元素定位实例
import time
from appium.webdriver import Remote
# 启动一次请求
# 1、指明需要连接的服务地址和端口号
# 2、You must include a platformName capability
# 3、caps的作用就是告诉appium服务我们要干什么,启动的哪个设备,哪个app应用程序(apk绝对路径)
caps = {
"platformName": "Android",
# "deviceName": "emulator-5554",
"udid": "emulator-5554",
# 安装apk
# "app": "D:lemon_app_webview_debug.apk",
"platformVersion": "7.1.2",
"unicodeKeyboard": True,
"resetKeyboard": True,
"autoGrantPermissions": True,
# 已存在APP时,可以不使用app属性,获取app包名和activities
"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
el1 = driver.find_element("id", "com.lemon.lemonban:id/navigation_my")
# 找元素 xpath
el2 = driver.find_element("xpath", "//*[@resource-id='com.lemon.lemonban:id/navigation_my']")
el2.click()
# 强制等待
time.sleep(3)
driver.quit()
4.appium的用法和selenium为什么那么像?
appium:from appium.webdriver import Remote
selenium:from selenium.webdriver import Chrome
查看源码可知,Remote和Chrome继承的类是同一个类。
5.元素定位优先用什么方式?
- 优先使用id,id不是唯一的,appium inspector 元素搜索
- xpath,组合id和其他属性(text,索引)
- find_element_by_android_uiautomator(‘new UiSelector().text(“我”)’),UiSelector是通过安卓代码定位,比较容易出错,不建议使用。
原文地址:https://blog.csdn.net/Ly_LittleStar/article/details/122158050
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.7code.cn/show_30136.html
如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱:suwngjj01@126.com进行投诉反馈,一经查实,立即删除!