ICode9

精准搜索请尝试: 精确搜索
首页 > 其他分享> 文章详细

基于appium的自动化元素定位方法

2020-03-16 10:45:38  阅读:316  来源: 互联网

标签:定位 appium UiSelector MobileBy app 元素 element 自动化


连接真机或者模拟器
通过命令adb devices 查看是否已连接上
如下图表示已连接上
在这里插入图片描述
以下内容均是在已连接上真机或者模拟器的前提条件下进行:

元素定位工具
1.uiautomatorviewer.bat
  uiautomatorviewer.bat工具在安装完ADT工具之后,位于ADT安装路径的android-sdk-windows\tools\bin或者android-sdk-windows\tools目录下
双击启动即可,启动之后,在初始界面上,点击如图位置按钮可以进行截屏
在这里插入图片描述
截屏后即可查看各个元素,截屏后的效果:
在这里插入图片描述

上面步骤有的会不成功,也可以通过以下方式进行操作
通过命令截图取源码放到本地
命令如下:
adb shell uiautomator dump /sdcard/app.uix
adb pull /sdcard/app.uix G:\app_pic_screen\test_appium_uix
adb shell screencap -p /sdcard/app.png
adb pull /sdcard/app.png G:\app_pic_screen\test_appium
再同样打开uiautomatorviewer.bat,点击左上角文件图标录入对应命令取到的文件点击ok即可达到第一种方式的效果
在这里插入图片描述
还可以通过另外一种工具来进行元素的定位(WEditor)
WEditor可以理解为在浏览器中打开的uiautomatorviewer.bat,个人感觉该方法比打开uiautomatorviewer.bat的好用
1、安装WEditor
1)在cmd中输入命令:pip install uiautomator2
2)在cmd中输入命令:python -m uiautomator2 init
3)在cmd中输入命令:pip install weditor
2、启动运行WEditor
在cmd中输入命令:python -m weditor
也可以为以后方便启动不会一直需要敲命令可以在在cmd中输入命 令:
python -m weditor —shortcut
然后就会在电脑桌面有个快捷键
在这里插入图片描述以后直接双击 该快捷键即可启动WEditor
3、启动WEditor后会打开如下:
在这里插入图片描述
同时也会打开浏览器进入启动页面:
在这里插入图片描述
然后点击 connnet 等待连接成功,连接成功标识如下:
在这里插入图片描述
后续的定位操作即可在该浏览器上完成。

2.appium检查器
  在appium启动后的日志窗口界面,点击“启动检查器会话”,会跳转到检查器启动参数配置界面,参数配置直接将我们代码里面的启动参数搬过来就可以了。
   在这里插入图片描述
  点击启动后,会根据我们配置的应用信息,自动跳转到应用的主页面,我们就可以开始进行元素定位了:

app元素定位方法
  appium的定位方法从selenium中继承了所有的元素定位方法,同时也增加了自己的一些方法,也就是说我们完全可以使用web中selenium定位元素的所有方法,也可以使用appium中独有的定位方法:
  一般比较常见的有以下:

# app_driver.find_element_by_android_uiautomator("")
# app_driver.find_element_by_accessibility_id("")
# app_driver.find_element_by_id("")
# app_driver.find_element_by_class_name("")
# app_driver.find_element_by_xpath("")

注意:以上分别对应着
通过android_uiautomator定位:SDK自带的java开发的uiautomator自动化框架
通过accessibility_id定位:uiautomatorviewer.bat上对应的是content-desc,根据对比在weditor上面对应的是description
通过id定位:resource-id
通过class_name定位:class
通过xpath定位
一般较少的使用xpath进行定位,xapth在app自动化元素定位当中是相对来说不够稳定。

1、android_uiautomator定位
driver.find_element_by_android_uiautomator() 或者 MobileBy.ANDROID_UIAUTOMATOR
此方法传的参数为UiSelector类定位元素的表达式如下:
new UiSelector().函数名称(‘定位表达式’)
实例化一个UiSelector对象,然后通过实例接口调用,具体请参考官网说明:网址:https://developer.android.com/training/testing/ui-automator.html#ui-automator-viewer
实例接口:

在这里插入图片描述
在这里插入图片描述
取个栗子:
在这里插入图片描述
需要定位到首页这个元素:

element = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("首页")')

2、accessibility_id定位
取个栗子:
在这里插入图片描述
需要定位到首页这个元素:

element = (MobileBy.ACCESSIBILITY_ID, "饿了么")

3、id定位
取个栗子:
在这里插入图片描述
需要定位到首页这个元素:

element = (MobileBy.ID, "com.taobao.taobao:id/iv_image")

4、class_name定位
取个栗子:
在这里插入图片描述
需要定位到首页这个元素:

element = (MobileBy.CLASS_NAME, "android.widget.ImageView")

5、xcpath定位
举个栗子:
在这里插入图片描述
需要定位到首页这个元素:

element = (MobileBy.XPATH, '//*[@content-desc="饿了么"]')

还有一些其他定位
1、组合定位
组合定位一般使用的方法是UIAumtomator下的方法,因为UiSelector类下的方法都反回了对象本身,因此可以连续调用各种方法,这种使用方法即组合定位
在这里插入图片描述
组合定位方法如下:

element = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().className("android.widget.FrameLayout").description("饿了么")')

2、父子定位
调用UiSelector类的childSelector()方法,在该方法里面传入子代的元素定位表达式
这里就不截图举例了

loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().className("class_name").childSelector(text("text"))')

3、兄弟定位
通父子定位,我们调用fromParent()方法,表示定位同级的兄弟元素

loc = (MobileBy.ANDROID_UIAUTOMATOR, 'new UiSelector().text("text1").fromParent(text("text2"))')

注意UiSelector官方文档说明是国外的地址(你懂的),需要翻墙。

标签:定位,appium,UiSelector,MobileBy,app,元素,element,自动化
来源: https://blog.csdn.net/ZuiSi/article/details/104840138

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有