native app:原生页面
web app:网页嵌入
hybrid app:介于native和web app之间,既有原生页面又有H5页面
activityName:每一个app页面都有自己的activityName
appActivity:用来启动app的
如何在手机上打开指针定位:
元素定位
1、ID定位
Id就是一个元素的唯一身份标识,由开发人员在项目中指定,如果有对应的resource-id,我们就可以采取这种方式来 实现定位操作 注意:有可能app项目开发人员并不是很严谨,一个页面会有多个相同的resource-id属性
androidDriver.findElement(By.id("xxx")).click();
2、text定位--安卓内置方法定位
driver.findElementByAndroidUIAutomator("new UiSelector().text("文本")")
3、className定位
根据class属性查找元素,这种方式一般得到的会是多个元素,重复较多
androidDriver.findElement(By.className("xxx"));
4、xpath定位
在项目中此种方式能够适用各种场景,推荐使用
相对定位
属性名+定位属性
driver.findElement(By.xpath("//android.widget.TextView[@text='文本']")).click();
android.widget.EditText(contains(@resource-id,'et_mobile'))---android.widget.EditText为class属性名
android.widget.TextView[@text='文本']
5、accessibility id定位
在UIAutomatorViewer并没有此属性,对应是content-desc属性
androidDriver.findElementByAccessibilityId("xxx");
6、坐标定位
driver.tap()
https://www.cnblogs.com/yoyoketang/p/7778077.html
选择设置中关于手机->连续点击五次版本号->进入开发者选项->指针位置进行勾选
注意:
坐标定位受设备屏幕尺寸/分辨率/DPI影响,万不得已不要使用此种方式 只能进行点击
7、UIAutomator定位
8、toast元素定位
Android中的Toast是一种简易的消息提示框。 当视图显示给用户,在应用程序中显示为浮动。和Dialog不一样的 是,它永远不会获得焦点,无法被点击。
获取方式:androidDriver.findElement(By.xpath("//*[contains(@text, 'xxx')]"));
public void testLocate() throws InterruptedException { //1、元素定位-ID(有多个id时放到list中) List<WebElement> list = driver.findElements(By.id("com.lemon.lemonban:id/category_title")); list.get(1).click(); //2、文本定位 driver.findElementByAndroidUIAutomator("new UiSelector().text("文本")").click(); //3、xpath //android.widget.EditText(contains(@resource-id,'et_mobile')) driver.findElement(By.xpath("//android.widget.TextView[@text='文本']")).click(); //4、AccessbilityID定位 content-desc属性值 driver.findElementByAccessibilityId("xx").click(); //5、坐标点击 533 577 Thread.sleep(5000); TouchAction touchAction = new TouchAction(driver); //初始化PointOption类型的对象,把原始的坐标进行封装 PointOption pointOption = PointOption.point(533,577); touchAction.tap(pointOption).perform(); }