Android自动化(一)之控件定位小技巧

ui自动化定位页面元素常用的就这几种:resource_id,text,class,content-desc,xpath,index以及结合控件的不同属性来定位元素。但是我们总会遇到各种各样的定位不到(appium版本)。定位元素的方法很多种,下面是就一些控件定位的小技巧。掌握这些技巧希望以后能轻松一些。

1)、关于没有name,没有ID的元素的定位

因为没有name,id;定位方式我们可以用xpath,或者classNamexpath可以用or进行选择比较适合通用模板。但是classname直接简单也是不错的选择

我的方法:

1、用className获取所有该类型的元素;

2、根据元素的位置确定元素的index;

3、获取目标元素。

示例:

List lis = driver.findElementsByClassName("Android.widget.ImageView"); //获取ImageView的所有元素

WebEelement targetEle = lis.get(0); //获取列表中第一个元素


2)、关于没有name,没有ID的元素的定位---特用篇
因为是特用,所以需要对页面元素做进一步的分析,找出其中的特性。这些特性主要为className,index,以及clickable等属性。
场景1:同一个页面有10ImageView对象,而我们的目标元素的index4,而同为ImageViewindex4的页面只有2个。那我们就可以根据这2个条件来组合查询条件,提高效率。
示例:
List lis = driver.findElementsByAndroidUIAutomator("new UiSelector().className("+"android.widget.ImageView"+").index(4)");
基于这个场景可以封装一个方法:
public List getElementsByClassAndIndex(String classname,int index){
List lis =null;
lis = driver.findElementsByAndroidUIAutomator("new UiSelector().className("+classname+").index("+index+")");
return lis;
}

场景2:同一个页面有10ImageView对象,而其中index4的有5个,而这时我们发现我们的目标元素的是clickable的。然后review页面发现,同时满足上述条件的只有2个。那么。。。

示例:

List lis = driver.findElementsByAndroidUIAutomator("new UiSelector().className("+"android.widget.ImageView"+").index(4).clickable(true)");

场景3:在分析页面元素的时候发现,页面相对比较简单,而且其中只有目标元素的index4.

示例:

driver.findElementByAndroidUIAutomator("new UiSelector().index("+index+")");

3)、关于没有name,没有ID的元素的定位( or h5页面)- 使用description来定位。

driver.findElementByAndroidUIAutomator("new UiSelector().description(\"+ "我知道了" + \")");

4)、关于输入框有默认text,且当你选中时,不会清空处理。

类似的情况,用element.clear()是没有效果的。那怎么办呢? 不急,appium提供了很多的操作,直击不行,我们就上组合拳。

示例:

public void clear(WebElement el){

el.click(); //选中输入框

driver.sendKeyEvent(123);//将光标移到最后

String txt = el.getText(); //获取字符串长度

for(int i=0;i

driver.sendKeyEvent(67);//一个个的删除。。。。。

}

}



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值