基于appium的自动化元素定位方法
作者:互联网
连接真机或者模拟器
通过命令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