Appium中app的元素定位

上下观古今,起伏千万途。这篇文章主要讲述Appium中app的元素定位相关的知识,希望能为你提供帮助。
app定位方式,本文只讲android手机的定位方式。
【Appium中app的元素定位】前提条件是adb连接到模拟器或者是手机(具体连接方式这里不再讲解),证明已连接到设备

adb devices

Appium中app的元素定位

文章图片

app元素定位工具一:UI Automator Viewer
这个工具是Android SDK自带的一个定位工具,具体页面截图如下:
Appium中app的元素定位

文章图片

 
app元素定位工具二:Appium工具
启动Appium,启动之后,页面有一个放大镜的按钮,如图所示:
Appium中app的元素定位

文章图片

 
  点击放大镜按钮,进入配置项,如果所示:
platformName  --系统名称
platformVersion  -- 系统的版本
deviceName  --机型(随意添)
appPackage  --app包名(这里以淘宝为例)
appActivity --欢迎页面
noReset --启动app时不要清除app里的原有的数据(True)
 
获取appPackage和appActivity的方法,com命令进入Android-sdk/build-tools-29.0.2目录下,执行命令
aapt dump badging xxx.apk(安装包名称)

app包名
Appium中app的元素定位

文章图片

 
appActivity名称:
 
Appium中app的元素定位

文章图片

 
 
Appium中app的元素定位

文章图片

 
  设置好启动项参数后,启动会话。
Appium中app的元素定位

文章图片

 
 
接下来说元素定位表达式,appium中的定位表达式,继承了selenium中的八大定位表达式(selenium的八大定位前边已经说过,就不再赘述),同时也有自己的定位表达式,分别是:
Appium中app的元素定位

文章图片

 
Appium中app的元素定位

文章图片

AndroidUiAutomator定位使用UiAutomator中的UiSelector类来处理元素定位,该方法的参数为UiSelector类定位元素的表达式
new UiSeletor().函数名称("定位表达式")
实例化一个UiSelector对象,然后通过实例调用接口。
这里常用的是ANDROID_UIANTOMATOR和ACCESSIBILITY_ID元素定位
 
举个栗子:
通过resrouce-id来定位
find_element_by_android_uiautomator(\'new UiSelector().resourceId("com.taobao.taobao:id/textview_goods_title")\')

  通过text来定位
find_element_by_android_uiautomator(\'new UiSelector().text("文本内容")\')

  通过content-desc定位
find_element_by_android_uiautomator(\'new UiSelector().description("勾选宝贝")\')

 
id、class、content-desc定位通过id来定位(resrouce-id)
find_element_by_id("com.taobao.taobao:id/textview_goods_title")

通过ClassName定位(class)
.find_element_by_class_name("android.widget.CheckBox")

通过AccessibilityId定位(content-desc)
find_element_by_accessibility_id("勾选宝贝")

app定位中不建议使用xpath定位,多以此处也不再多赘述了。

    推荐阅读