appium for android 查找元素方法总结

简介:

使用appium测试app自动化查找元素时比较麻烦,没有selenium查找web页面元素方便,

 

并且局限性也比较高,使用起来不是太灵活。

 

那下面介绍下我们一般经常使用到的一些查找元素的方法(已锤子手机为例)。

 

有两个工具可以用来查找元素:安卓sdk自带的uiautomator viewerappium最新版1.0.2

 

建议使用uiautomator viewer,个人感觉使用起来要方便些,包括复制元素的值也比较方便

 

先链接锤子手机:

wKioL1lCFNHwAg-jAAnXaulvUfI675.png-wh_50

方法有很多,:

通过xpyth定位findElementByXPath("//android.widget.TextView[10]")xpath下标从1开始,使用完整的classname

通过text namefind_element_by_namename对应uiautomator扫描后text的内容)

通过idfind_element_by_idid对应resource-id)

通过classname定位:find_element_by_class_name(class_name对应class)

通过accessibility idfind_element_by_accessibility_id(accessibility_id对应content-desc)

定位到某个文本框,并输入内容:

driver.find_element_by_id("xxxxx").send_keys("123456")

滑动屏幕:

获取屏幕尺寸 width=self.driver.get_window_size()['width']height=self.driver.get_window_size()['height']

滑动屏幕 driver.swipe(width*9/10, height*1/2, width*1/10, height*1/2, 1000)

 

在手机上打开头条,只介绍常用的三种:

  • find_element_by_namename对应uiautomator扫描后text的内容)

wKiom1lCF5WilQI2AAL6riQ-qKQ644.png-wh_50

脚本中输入这个name就可以定位到这个元素,然后做相应的操作,比如click()

  • find_element_by_idid对应resource-id,用这个查找比较准确)

wKiom1lCF7DiqKoDAAJbVqR-2EI868.png-wh_50

resource-id查找是最准确的!

  • find_element_by_class_name(class_name对应class,用这个一般都查找出的是一堆的数据,因为有很多地方都使用同一个class name)

wKiom1lCF8jg5bu8AAKsnIHD3cA145.png-wh_50

这个是名为android.widget.TextViewclassname,其他的行全部都是这个name

wKioL1lCF-zDeb0yAAIwjNLvqtY632.png-wh_50

看看,其他的也是这个class name,所以用这个查找会找出一个列表的数据出来,如果想单独取某个行的数据,就需要使用for 循坏或者下脚标来取[X]

 

在做app自动化时需要花很大的精力去提前获取的数据并整理,因为很多数据是不能一一

对应的。


本文转自niedongri 51CTO博客,原文链接:http://blog.51cto.com/laomomo/1937024,如需转载请自行联系原作者

 

相关文章
|
3月前
|
存储 Shell Android开发
基于Android P,自定义Android开机动画的方法
本文详细介绍了基于Android P系统自定义开机动画的步骤,包括动画文件结构、脚本编写、ZIP打包方法以及如何将自定义动画集成到AOSP源码中。
73 2
基于Android P,自定义Android开机动画的方法
|
3月前
|
Android开发
基于android-11.0.0_r39,系统应用的手动签名方法和过程
本文介绍了基于Android 11.0.0_r39版本进行系统应用手动签名的方法和解决签名过程中遇到的错误,包括处理`no conscrypt_openjdk_jni-linux-x86_64`和`RegisterNatives failed`的问题。
167 2
|
17天前
|
缓存 Java Shell
Android 系统缓存扫描与清理方法分析
Android 系统缓存从原理探索到实现。
42 15
Android 系统缓存扫描与清理方法分析
|
2月前
|
ARouter 测试技术 API
Android经典面试题之组件化原理、优缺点、实现方法?
本文介绍了组件化在Android开发中的应用,详细阐述了其原理、优缺点及实现方式,包括模块化、接口编程、依赖注入、路由机制等内容,并提供了具体代码示例。
44 2
|
3月前
|
Android开发
Android在rootdir根目录创建自定义目录和挂载点的方法
本文介绍了在Android高通平台的根目录下创建自定义目录和挂载点的方法,通过修改Android.mk文件并使用`LOCAL_POST_INSTALL_CMD`变量在编译过程中添加目录,最终在ramdisk.img的系统根路径下成功创建了`/factory/bin`目录。
182 1
|
3月前
|
开发工具 uml git
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
本文分享了下载AOSP源码的方法,包括如何使用repo工具和处理常见的repo sync错误,以及配置Python环境以确保顺利同步特定版本的AOSP代码。
399 0
AOSP源码下载方法,解决repo sync错误:android-13.0.0_r82
|
3月前
|
Android开发
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
Android项目架构设计问题之onFirstItemVisibleChanged方法的调用如何解决
38 0
|
3月前
|
Java 测试技术 Android开发
Android项目架构设计问题之使用反射调用类的私有方法如何解决
Android项目架构设计问题之使用反射调用类的私有方法如何解决
28 0
|
4月前
|
Android开发
Android面试题之View的invalidate方法和postInvalidate方法有什么区别
本文探讨了Android自定义View中`invalidate()`和`postInvalidate()`的区别。`invalidate()`在UI线程中刷新View,而`postInvalidate()`用于非UI线程,通过消息机制切换到UI线程执行`invalidate()`。源码分析显示,`postInvalidate()`最终调用`ViewRootImpl`的`dispatchInvalidateDelayed`,通过Handler发送消息到UI线程执行刷新。
53 1
|
4月前
|
XML Android开发 UED
Android动画之共享元素动画简单实践
本文介绍Android共享元素动画, 实现两Activity间平滑过渡特定UI元素。通过设置`transitionName`属性和使用`ActivityOptions.makeSceneTransitionAnimation`启动目标Activity实现动画效果。可自定义过渡动画提升体验。
63 0