美文网首页
App常见元素定位

App常见元素定位

作者: testerPM | 来源:发表于2020-03-19 21:02 被阅读0次

    id定位

    (1)id定位方式找元素属性,对于app,找到的不是id,而是resource-id


    image.png

    (2)开发会误写一些重复的id,注意下重复的id问题: 重复的id默认会点击第一个

    //1. resouce-id定位
            androidDriver.findElement(By.id("com.lemon.lemonban:id/navigation_tiku")).click();
    
    

    className定位(不推荐)

    (1)className定位找元素,元素属性不是className,而是class


    image.png

    (2)一般不通过class来定位-》className一般会有很多重复的(如上图,class的属性值就是标签名(有很多一样的标签名)

    Accessbility id定位

    (1)Accessbility id定位去找元素的属性,属性不是Accessbility ID,而是content-desc
    (2)如果元素有content-desc属性,我们就可以通过它来进行定位


    image.png
            androidDriver.findElementByAccessibilityId("题库").click();
    

    Text文本定位

    (1)Web自动化话里面元素的文本值是放在标签对中间的,而app元素文本值是作为元素的属性存在的
    (2)appium 没有原生的方式支持Text文本定位

    androidDriver.findElementByAndroidUIAutomator("new UiSelector().text(\"题库\")").click();
    

    findElementByAndroidUIAutomator: 通过Android原生的自动化引擎去定位元素
    new UiSelector().text("题库"):实例化UiSelector对象,调用text方法

    xpath定位相对定位

    android.widget.FrameLayout是标签名字


    image.png
            //4.xpath相对定位
            androidDriver.findElement(By.xpath("//android.widget.FrameLayout[@content-desc=\"题库\"]")).click();
    

    坐标定位

    (1)坐标打开
    手机设置-》开发者选项-》显示指针位置打开
    代码中加入了硬性等待,如果不加傻等,app页面还没有打开,代码就执行完了(这里因为没有调用findElement,隐式等待就没作用了)

        // 5.坐标定位元素
            Thread.sleep(5000);
            TouchAction action = new TouchAction(androidDriver);
            // 将原始坐标x,y转换成PointOption类型
            PointOption pointOption = PointOption.point(451, 1537);
            // 点击坐标,注意,这里不能直接传入坐标,必须传入PointOption类型(因为java-client版本发生了变化,6.1.0之后的版本必须传入PointOption类型
            // 调用perform()让点击生效
            action.press(pointOption).perform();
    
    

    相关文章

      网友评论

          本文标题:App常见元素定位

          本文链接:https://www.haomeiwen.com/subject/tetlyhtx.html