IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> 开发测试 -> APP元素定位方法 -> 正文阅读

[开发测试]APP元素定位方法

? ? ? ?appium环境搭建完成后,我们通过什么方式去操作app应用程序呢,有了了解过web自动化测试的就清楚,我们是通过定位元素,再对app应用程序进行操作的,那么app是哪些元素定位的方式呢?接下来介绍以下。


一、元素定位辅助工具

方法一:通过appium中的inspect定位

步骤:1、启动appium之后,点击右上第一个搜索按键,

2、然后配置相关的启动app信息,启动应用程序
配置信息有:
1)platformName ==> 直接填入 Android / ios
2)deviceName ==> 手机连接电脑,cmd命令行输入:adb devices,获取设备名称,

3)appPackage、appActivity ==>cmd命令行输入:aapt dump badging + app安装包电脑路径

4)appium启动编写信息如下,点击启动会话:
元素显示如下:
注意点;1)xpath大部分用的为绝对路径(不适用);
       2)id,80%都会有的

       
方法二:通过安卓官方提供的 uiautorviwer ( 升级版工具,升级xpath表达式)
操作步骤:1)打开安卓的sdk文件,
         2)在tools文件下,打开bin文件,选中:uiautorviewer.bat
         3)注意运行完,必须要手动关闭,driver.quit()
        
方法三:atx,weditor(元素定位辅助工具)
      安装:pip install weditor ,通过cmd,运行 weditor,会通过默认浏览器打开界面,
?           可用xpathlife表达式

      优势:能提供xpath表达式,;
      劣势:weditor和appium不能同时使用(需关闭axt进程服务 或 直接卸载应用。)

二、元素定位表达式

查找元素:

- driver.find_element('id',' 表达式 ')
- driver.find_element('xpath',' 表达式 ')
- tagname不行,class_name可以,但相当于原来的tag_name,不能精准定位
初此之外,还可通过安卓原生的定位方式定位,但需要写java代码(没有提示)
java语言字符串,只能用双引号(" "),不能用单引号,
优势:原生代码,定位更快

locator = 'new UiSelector().resourceId("com.lemon.lemonban:id/navigation_my").checkable(false)'
driver.find_element_by_android_uiautomator(locator)

总结元素定位方式:
1) 优先使用id ;
2)xpath方便获取,还可用过text文本定位 ;
3)Android_uiautomator  原生模式 ;
4)content-desc  driver.find_element_by_accessibility_id()  通过描述desc(description)去获取元素,但极可能没有
5)className  基本不用

使用:driver.find_element(By.ID,'com.xxzb.fenwoo:id/imageView3').click()

如为app特有的方式,(Android_uiautomator、accessibility_id)
driver.find_element(MobileBy.ANDROID_UIAUTOMATOR,locator)
locator ==> 元素表达式
注意:
weditor、appium不能同时运行,会冲突;
关闭weditor,记得需打开应用,点击关闭所有服务

查看是否有uiautomator在运行
cmd ==》 adb shell pm list package | grep uiautomator (grep不行时,可改为findStr , window系统下)
卸载服务(一个个卸载)
adb uninstall com.github.uiautomator
adb uninstall com.github.uiautomator.tests
adb uninstall io.appium.uiautomator2.server
adb uninstall io.appium.uiautomator2.server.tests
from appium.webdriver import Remote

caps = {'platformName':'Android','deviceName':'emulator-5554',
        'appPackage':'com.xxzb.fenwoo','appActivity':'com.xxzb.fenwoo.activity.addition.WelcomeActivity',
        'noReset':True}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=caps)
driver.implicitly_wait(10)

# 通过uiautorviewer获取元素表达式
driver.find_element('xpath','//android.widget.TextView[@text=\"发现\"]').click()
# 通过 atx 获取元素表达式
# driver.find_element('xpath','//*[@resource-id="com.xxzb.fenwoo:id/textView6"]').click()
# 通过inspect + 原生代码定位
locator = 'new UiSelector().resourceId("com.xxzb.fenwoo:id/imageView3").checkable(false)'
driver.find_element_by_android_uiautomator(locator).click()
driver.quit()

三、元素属性的获取

# 获取现在页面的源代码
print(driver.page_source)

# 获取当前的包名
print(driver.current_package)

# 获取当前页面,activity (可理解为web中的url)
print(driver.current_activity)

# 获取当前上下文环境  NATIVE_APP 原生app环境,对应h5环境
print(driver.current_context)
# start_activity 操作可直接跳转至具体页面 (需填两个参数,app_package、app_activity  )
# app_package 可通过cmd  运行:aapt dump badging + 安装包路径
# app_activity 可通过cmd  运行:adb shell dumpsys activity|find "mResumedActivity"  (从.activity开始获取)

from appium.webdriver import Remote


caps = {'platformName':'Android','deviceName':'emulator-5554',
        'app':r'C:\Users\lalanala\Desktop\Future-release-2018.apk'}
driver = Remote(command_executor='http://127.0.0.1:4723/wd/hub',desired_capabilities=caps)
driver.implicitly_wait(10)
driver.start_activity(app_package='com.xxzb.fenwoo',app_activity='.activity.addition.LoginActivity')
driver.quit()


总结

先简单记录至此,以便复习查看~~

现实总会比自己想象要差一点点,所以还是不要抱太大的希望吧,还是要脚踏实地,一步一个脚印往前看,fighting·~~

  开发测试 最新文章
pytest系列——allure之生成测试报告(Wind
某大厂软件测试岗一面笔试题+二面问答题面试
iperf 学习笔记
关于Python中使用selenium八大定位方法
【软件测试】为什么提升不了?8年测试总结再
软件测试复习
PHP笔记-Smarty模板引擎的使用
C++Test使用入门
【Java】单元测试
Net core 3.x 获取客户端地址
上一篇文章      下一篇文章      查看所有文章
加:2021-08-09 10:31:40  更:2021-08-09 10:32:17 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年5日历 -2024/5/3 0:52:41-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码