APP自动化测试关键环节--元素定位,以下我们来了解appium提供的元素定位方法!

1. id定位,id一个控件的唯一标识,由开发人员在项目中指定,如果一个元素有对应的resource-id,我们就可以采用这种方式来实现元素定位操作,但是实际开发中,也有可能app项目的开发人员不是很严谨,一个页面有很多个相同的id,获取到的元素结果是一个集合,所以这种情况我们需要用list进行接收

//找到想要定位的元素并进行点击
androidDriver.findElement(By.id("id")).click();

2. text 定位,java-client旧版本提供了相应的API支持

//根据text属性进行定位
androidDriver.findElement(By.name("登录"));

注意:java-client新版本运行之后会发现定位失败,这是因为java-client 5.0 以后新版本不支持这个API:

Exception in thread "main" org.openqa.selenium.InvalidSelectorException: Locator Strategy 'name' is not supported for this session (WARNING: The server did not provide any stacktrace information)

解决方案:

androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"登录\")");

注意提示:

因为:

解决办法:Configure Build Path jdk1.8 

配置后:

3. className 定位。根据class类查找元素,一般得到的是多个元素(除非className唯一),如果得到多个,我们需要用一个List集合接收返回值

//根据className属性进行定位
List<WebElement> listElement = androidDriver.findElements(By.className(("className")));
listElement.get(1).click();

4. xpath 定位

//根据xpath属性进行定位
androidDriver.findElement(By.xpath("//android.widget.Button[@text='登录']")).click();
androidDriver.findElement(By.xpath("//android.widget.Button[@text=\"登录\"]")).click();

5. accessibility id 元素定位 

//根据AccessibilityId进行定位
androidDriver.findElementByAccessibilityId("登录").click();

6. 坐标定位:通过开发者选项>>指针位置或者是UIAutomatorView获取到的位置(绝对坐标)

//坐标定位
//通过TouchAction类完成坐标点击
TouchAction touchAction = new TouchAction<>(androidDriver);
//将(x,y)坐标封装成PointOption对象传入tap方法调用
PointOption pointOption =PointOption.point(500, 500);
//通过调用tap方法进行点击.调用perform()方法执行点击
touchAction.tap(pointOption).perform();

7. UIAutomator 定位,安卓的UIAutomator是一个强有力的元素定位方式,它是通过Android提供的原生的UIAutomator框架去找元素,且支持元素全部属性定位,appium提供的定位元素API其实都是UIAutomator提供的API,appium元素定位方式如下:

//通过UIAutomator 的description 方法找到属性是 content-desc 的元素
androidDriver.findElementByAndroidUIAutomator("new UiSelector().description(\"登录\")").click();
//通过UIAutomator的text 方法找到属性是text的元素
androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"登录\")").click();
//通过UIAutomator的 resourceId方法找到属性是 resourceID的元素
androidDriver.findElementByAndroidUIAutomator("new UiSelectot().resourceId(\"resource-id\")").click();

8.未完待续.......

最新文章

  1. .NET Core采用的全新配置系统[10]: 配置的同步机制是如何实现的?
  2. jQuery所支持的css样式
  3. 使用crypto模块实现md5加密功能(解决中文加密前后端不一致的问题)
  4. git 分批后的数据
  5. Map和HashMap
  6. debian7下部署nginx服务器
  7. 【转】android 选取图片
  8. JavaScript网站设计实践(五)编写photos.html页面,实现点击缩略图显示大图的效果
  9. uva 12654
  10. Java中的数据类型及相互转换方法
  11. Java中的字面量
  12. MFC入门教程01 Windows编程基础
  13. 预防黑客入侵 防黑必学的cmd命令vs网络安全
  14. cookie 操作(转载)
  15. FORM的静态提交
  16. 线段树(segment_tree)
  17. 关于memset赋值问题
  18. RDMA技术解析
  19. SSH 等效性问题 总提示输入密码问题
  20. 为你的 Hadoop 集群选择合适的硬件

热门文章

  1. Docker系列(4)- run的流程和docker原理
  2. Shell系列(16)- 环境变量配置文件简介及source命令
  3. centos7安装部署SVN
  4. hadoop报错
  5. 深入理解Python切片
  6. Golang使用swaggo自动生成Restful API文档
  7. 三款超实用,好用的Python开发IDE推荐,看完总会有一款合适你的
  8. 软件测试工程师简历要怎么写,才能让HR看到
  9. python paramiko实现ssh上传下载执行命令
  10. html行内元素