app类型与元素定位-android

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();
    }

appium元素定位原理

原文地址:https://www.cnblogs.com/erchun/p/13283945.html