zoukankan      html  css  js  c++  java
  • appium-2-uiautomator定位

    我们经常使用Android自身独有的定位方式,

    driver.find_element_by_id("xxxxx")

    driver.find_elements_by_id("xxxx")

    driver.find_element_by_class_name("xxxx")

    这里写的elements的意思就是这个页面,有很多个id,假如你写element的话,就是默认取第一个符合要求的元素

    上面的这些都是我们经常使用到的定位方式,都是常用的

    appium之uiautomator定位元素

    基本语法:想要使用该方法定位,一定要有uiautomator库

    driver.find_element_by_android_uiautomator(xx)

    1).通过text文本定位语法

      new UiSelector().text("text文本")

    text = 'new UiSelector().text("xxxx")'
    driver.find_element_by_android_uiautomator(text).click()

    2).如果文本比较长,可以用textContains模糊匹配

      new UiSelector().textContains("包含text文本")

    textContains = 'new UiSelector().textContains("xxx")'
    driver.find_element_by_android_uiautomator(textContains).click()

    3).同样可以用textStartsWith是以某个文本开头来匹配

      new UiSelector().textStartsWith("以text文本开头")

    textStart = 'new UiSelector().textStartsWith("x")'
    click和上面的是一样的,

    4).也可以用正则表达式textMatches匹配

      new UiSelector().textMatches("正则表达式")

    2.resourceId

    与by_id一样

      new UiSelector().resourceId("id")

    id = 'new UiSelector().resourceId("xxx")'
    driver.find_element_by_android_uiautomator(id).click()

    3.className

    页面上的class属性一般不唯一,多半用在复数定位时候。此时定位相应下标

      new UiSelector().className("className")

    #className复数定位
    classes = 'new UiSelector().className("android.widget.TextView")'
    driver.find_elements_by_android_uiautomator(classes)[2].click()

    这里的【】表示你要取获取到的第几个元素索引位置 

    4.description

    也是用contenet-des属性定位

      new UiSelector().description("contenet-des属性")

    5.组合定位

    1).id与text属性组合

    #id+text
    id_text = 'resourceId("com.taobao.idlefish:id/center_text").text("闲鱼")'
    driver.find_element_by_android_uiautomator(id_text).click()

    假如使用Android自带的定位要结合text使用的话,语法如下:

    driver.finde_element_by_id("xxx").get_attribute("元素属性名")

    比如是text,就driver.finde_element_by_id("xxx").get_attribute("text")

    2).class与text属性组合

    #class+text
    class_text = 'className("android.widget.TextView").text("闲鱼")'
    driver.find_element_by_android_uiautomator(class_text).click()

    6.关系定位

    1).父子定位childSelector

      有时候不能直接定位某个元素,但是它的父元素很好定位,这时候就先定位父元素,通过父元素找儿子

    如上定位书架:

    #父子关系childSelector
    son = 'resourceId("com.taobao.idlefish:id/center_text").childSelector(text("闲鱼"))'
    driver.find_element_by_android_uiautomator(son).click()

     2).兄弟定位fromParent(这个定位,经常会使用到)以上所有的一定要练习,不练习你永远不知道你会遇到什么坑

      有时候父元素不好定位,但是跟他相邻的兄弟元素很好定位,这时候就可以通过兄弟元素,找到同一父级元素下的子元素

    #兄弟关系fromParent
    brother = 'resourceId("com.taobao.idlefish:id/center_text").fromParent(text("闲鱼"))'
    driver.find_element_by_android_uiautomator(brother).click()
  • 相关阅读:
    小白学Python第二周小结(函数)
    小白学Python读写文件和处理异常
    小白学Python做个小游戏
    小白学Python第二周小结(字符串和常用数据结构)
    小白学Python第一周小结
    OpenGL进阶之Instancing
    加减乘除算法代码 31
    软件团队模式选择 31
    开发流程选择 31
    countdown(倒计时) 31
  • 原文地址:https://www.cnblogs.com/SparkProgram/p/13345956.html
Copyright © 2011-2022 走看看