appium的元素定位总结

摘要:
需要注意的是,最好不要用这种定位方法,因为Appiumv1.0已经不建议使用通过name进行定位的方式。需要注意的是,由于classname不是唯一的,所以可能存在一个页面上有多个元素具有相同的classname。

appium的元素定位也是继承selenium的方法并有APP独有的定位方法,包含单个元素定位、元素列表定位:

单个元素定位:

driver.find_element_by_accessibility_id(id)
driver.find_element_by_android_uiautomator(uia_string)
driver.find_element_by_class_name(name)
driver.find_element_by_css_selector(css_selector)
driver.find_element_by_id(id_)
driver.find_element_by_ios_predicate(predicate_string)
driver.find_element_by_ios_uiautomation(uia_string)
driver.find_element_by_link_text(link_text)
driver.find_element_by_name(name)
driver.find_element_by_partial_link_text(link_text)
driver.find_element_by_tag_name(name)
driver.find_element_by_xpath(xpath)

元素列表定位即elements_by了。

部分方法案例:

1. find_element_by_id

用法:通过元素id来查找元素

示例:driver.find_element_by_id('com.android.calculator2:id/digit8')

这里元素id和 UIAutomatorView 中该元素的 resource id是一致的。

这里需要注意的是,Android 4.3 以上系统才会有 resource id。我尝试过 Android 4.2.2系统,结果resource id这里一直是空。

appium的元素定位总结第1张

2. find_element_by_accessibility_id(id)

示例:driver.find_element_by_accessibility_id("delete")

这里的accessibility id 跟 UIAutomatorView 中该元素的 content-desc 是一致的。

appium的元素定位总结第2张

3. find_element_by_name(name)

用法:通过元素 name 来查找元素

示例:driver.find_element_by_name("Create a new contact")

这里的name跟 UIAutomatorView 中该元素的 Text是一致的。

需要注意的是,最好不要用这种定位方法,因为 Appium v1.0 已经不建议使用通过name进行定位的方式。

appium的元素定位总结第3张

4. find_element_by_class_name(name)

用法:通过元素class name来查找元素

示例:driver.find_element_by_class_name("android.widget.Button")

这里的class name跟 UIAutomatorView 中该元素的 class 是一致的。

需要注意的是,由于 class name不是唯一的,所以可能存在一个页面上有多个元素具有相同的class name。

appium的元素定位总结第4张

5. find_element_by_xpath(xpath)

用法:通过元素xpath来查找元素

示例:driver.find_element_by_xpath("//android.widget.Button[@text='8']")

通过xpath进行定位的好处是,比较绝对,任何一个元素都可以通过xpath进行定位。

Xpath的自动抓取,可以用appium inspector,详见:https://www.cnblogs.com/songzhenhua/p/12913938.html

appium的元素定位总结第5张

6. find_element_by_android_uiautomator(uia_string)

用法:通过 UiAutomator 中的定位来进行定位

示例:driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.android.calculator2:id/digit8")')

这里可以通过UiSelector()的多种方式进行定位,上面只是举例采用了 resourceId而已。

appium的元素定位总结第6张

摘自:http://www.cnblogs.com/miniren/

免责声明:文章转载自《appium的元素定位总结》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇使用CMake构建OpenCV项目实现java非阻塞http请求的两种方式下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

vue效果之改element的el-checkbox-group多选框组为单选可取消的单选框(样式还是多选框的样式)

vue <el-checkbox-group v-model="listThematicChecked"> <el-checkbox v-for="(item , index) in subjectList" @change="clickThematicMapItem(item,index)" :key="item.me...

EJB3 阶段总结+一个EJB3案例 (2)

这篇博文接着上一篇博文的EJB案例。 在上一篇博文中,将程序的架构基本给描述出来了,EJB模块分为5层。 1)DB层,即数据库层     在则一部分,我使用的数据库为mysql。在EJB程序中,访问数据库是通过Jboss中配置好的数据源进行的,然后在数据库中建立相应的数据库,不用建立表,在程序中使用JPA后通过Jboss启动会自动在数据库中间表     具...

python appium自动化,走过的坑

使用的夜神模拟器,使用android5.1.1 或者真机 第一个坑:使用的android7.1.2,刚开始写好了登录的代码,需要的是滑屏进入到登录界面,结果运行的时候,没有自动滑屏就报错;因为运行时,报了一个进程被另一个程序在使用,怀疑是这个原因,又改了在进行滑屏前强行等待了几秒,还是不行;截其他界面的元素,也经常报一个UI的错,百度说这个是android...

appium 移动端自动化测试工具(4)

一 简介 原生应用和web应用 (1)原生应用是特别为某种操作系统开发的. (2)Web应用本质上是为移动浏览器设计的基于Web的应用. (3)混合应用大家都知道是原生应用和Web应用的结合体,採用了原生应用的一部分、Web应用的一部分,所以必须部分在设备上执行、部分在Web上执行。 appium架构 二 appium特点 三 工作原理 ap...

element tree组件

element tree 树形组件的使用 前言: 1.element tree有很多的方法获取数据但不是我们想要的类型 2.相信大家需要的数据类型是当你选中某个子级的时候要获取原始父级一直到你选中的子级的所有关系(说的不太明白),请先看图 图片 图片展示 顺序 组件展示 返回的数据 第一次 (未全部选中) 第二次(全部选中)...

05-移动和PC配置多页面打包引入element和vant冲突

element是全局引入的,那么vant需要手动按需引入,才不会报错(npm run build会报错,npm run serve不会报错,只会提示notify的warning) vant 如何手动引入?分为三步: 第一步:分别引入组件和样式 第二步:这是最关键的一步,组件赋名的时候要这样 如果上面这种注册写法还是会报错,那么可以换成下面这种写法:...