
一、常见属性的用法
二、通过截图就可以看到元素的属性,那怎么元素定位呢?
三、问题
xpath 相对定位:如果相对定位中这个元素是有 id 的,这个 id 是唯一的,xpath 定位中优先通过 id 来定位。
class 属性对应的值是元素类型(是一个文本视图工具),Web 自动化中元素类型代表 Input、image、button 这样的标签名。
「resource-id 是唯一的,但是在 App 页面中并不绝对唯一。大部分情况下是唯一的,小部分情况下是重复的。」
如果一个页面中,元素的样式非常像,那很有可能它们的 id 就是一样的。UIAutomator Viewer 这个自带的工具是不能看出这个 id 是不是绝对唯一的。
「假设 resource-id 是唯一的,用相对定位这样定位:」
和 Web 自动化一样的玩法: 元素类型[@属性名称=属性值]
这里的 class 不是 Web 网页中的 class 属性了,这里代表它的标签名和元素类型(它是一个、一个文字、链接还是一个按钮呢?学会区分)。
如果 resource-id 不是唯一的,那么上面那个表达式是不够的,还会追加到上层的 Linearlayout 、 RelativeLayout 、包括祖先里面的一些层级都会放进来。
如果没有安装“升级 uiaumatorview-添加元素定位”就只能靠自己来判断。看下其它和它长得很像、元素的格式、风格、样式、页面布局都和它一模一样的元素,看下各位的 id 是否全都是一样的。
如果用了“升级 uiaumatorview-添加元素定位”,可以根据它的表达式自己来判断。
任何一个元素一定会有个 class,因为它是一个类别。Linearlayout 是一样的,布局也是安卓的控件,所以也会有控件名称、控件类型。
以下这些东西只有 2 个值,False 和 True。
以上这些属性在很多情况下是没有用的,但是在关键的时刻是很有用的。
例如想筛选当前页面中可以滚动的元素,通过 scrollable 等于 True 来过滤。
和 Web 自动化一样的,都是通过元素属性来定位,而且比 Web 自动化简单。
App 中只支持 5 种元素定位方式。虽然继承了 Web 自动化的元素定位,它之所以继承呢,是用到了其中的一个部分。
1、通过 id 定位元素:resrouce-id
2、通过 ClassName 定位:classname
3、通过 AccessibilityId 定位:content-desc
4、通过 AndroidUiAutomator 定位
5、通过 xpath 定位
1、通过 id 定位元素:resrouce-id
2、通过 ClassName 定位:classname
3、通过 xpath 定位
有 find_element_by_id() 就有 find_elements_by_id()
可以找到多个,它的返回值一样是列表。它的返回对象一样是 Web element 。
在它的下面有个 find_element_by_id() 。它的方法和 Web 自动化是一样的。
虽然这里代表的是元素类型,但它同样是 class 属性。
这里有点区别,但是方法名还是没有区别的。这个 class 的属性其实没有多大用处,一个页面中肯定很多属性的值和它很像的。所以这种用法不多。
既然是类别,可能有好多种,输入框也有好多种,它代表的是一种元素的类型。
「Web 自动化中 xpath 定位是最常用的,但是 App 自动化中 xpath 是最不想用的。原因是它的效率太低了。」
「如果全部只用 xpath 定位,问题会比较大,能不用 xpath 就不用 xpath」 。
AccessibilityId 是移动端特有的定位方式。
这是之前看到的类,这个类当中除了继承了 Web 自动化之外,对于安卓有 2 种,其中一种是 ACCESSIBILITY_ID 。
如果通过这种方式定位,对应的方式就是:
此处应输入 content-desc 的值,但是这里是空的,所以不能通过它定位。
但是 find_element_by_accessibility_id() 是另外一种 id,代表它在当前这个页面中也是很独特的。只要它有值,基本上可以通过它来定位。
用的是安卓 UiAutomator 这个自动化框架中提供的元素定位方式。所以想用这种元素定位方式,就必须了解它到底是怎么做的。
UiAutomator 自动化库是 Java 语言写的,所以它的参数是 Java 代码。UiAutomator 自动化库提供了 text。而 「元素有文本内容就可以通过文本内容来定位。」
这个里面的参数就必须是 UiAutomator 当中提供的定位方式。UiAutomator 是 Java 实现的,那么它的定位类型肯定也是 Java 实现的。
>
以上就是关于Appium《元素定位和UiAutomator表达式》全部的内容,包括:Appium《元素定位和UiAutomator表达式》、uni-app获取dom节点信息、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)