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)
【测试|APP 自动化之appium元素定位(三)】解决方案:
androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"登录\")");
注意提示:
文章图片
文章图片
因为:
文章图片
解决办法:Configure Build Path jdk1.8
文章图片
配置后:
文章图片
3. className 定位。根据class类查找元素,一般得到的是多个元素(除非className唯一),如果得到多个,我们需要用一个List集合接收返回值
//根据className属性进行定位 ListlistElement = 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.未完待续.......
转载于:https://www.cnblogs.com/xiaozhaoboke/p/11312916.html
推荐阅读
- 操作系统|[译]从内部了解现代浏览器(1)
- 推荐系统论文进阶|CTR预估 论文精读(十一)--Deep Interest Evolution Network(DIEN)
- Python专栏|数据分析的常规流程
- Python|Win10下 Python开发环境搭建(PyCharm + Anaconda) && 环境变量配置 && 常用工具安装配置
- Python绘制小红花
- Pytorch学习|sklearn-SVM 模型保存、交叉验证与网格搜索
- OpenCV|OpenCV-Python实战(18)——深度学习简介与入门示例
- python|8. 文件系统——文件的删除、移动、复制过程以及链接文件
- 爬虫|若想拿下爬虫大单,怎能不会逆向爬虫,价值过万的逆向爬虫教程限时分享
- 分布式|《Python3网络爬虫开发实战(第二版)》内容介绍