• Appium之定位元素


     常用的appium元素定位工具:

    (1)Android SDK 中提供的元素定位工具uiautomatorviewer;

    (2)AppiumDesktop提供的元素定位工具Appium Inspector ;

    (3)自动化框架UIAutomator2提供的元素定位工具weditor;

     常用元素定位方法:

    1、通过resourceId定位

    driver.find_element_by_id("more-icon")

    2、通过text的文本属性定位

    driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("食品")').click()

    3、通过xpath定位

    driver.find_element_by_xpath('//android.widget.ListView/android.widget.LinearLayout[1]/android.widget.LinearLayout[1]').click()

    而对于text属性为文本的元素,也可以用xpath定位:

    driver.find_element_by_xpath("//*[@text='图书']").click()

    4、通过accessibility_id定位

    accessibility_id定位就是通过UI Automator(即Android_SDK自带的uiautomatorviewer)工具查看的content-desc属性

    driver.find_element_by_xpath("//*[@resource-id="com.taobao.taobao:id/rv_main_contai")

    使用uiautomator方法定位

    即driver.find_element_by_android_uiautomator('new UiSelector().xxx("xxx")')方法。

    (1)text属性

    driver.find_element_by_android_uiautomator('new UiSelector().text("食品")').click()
    driver.find_element_by_android_uiautomator('new UiSelector().text("text文本")').click()
    driver.find_element_by_android_uiautomator('new UiSelector().textStartsWith("以xxx开头的文本")').click()
    driver.find_element_by_android_uiautomator('new UiSelector().textContains("包含xxx文本")').click()
    driver.find_element_by_android_uiautomator('new UiSelector().textMatches("正则表达式")')

    (2)resourceId属性

    driver.find_element_by_android_uiautomator('new UiSelector().resourceId("com.baidu.yuedu:id/webbooktitle")').click()

    (3)className属性

    页面上的class属性一般不唯一,可先用复数定位,再用下标(索引)具体定位。

    driver.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.TextView")')[1].click()

    (4)description属性

    driver.find_element_by_android_uiautomator('new UiSelector().description("contenet-des属性")').click()

    组合定位元素

    (1)resourceId+text 或 className+text

    # className+text组合定位
    class_text = 'className("android.widget.TextView").text("150")'
    driver.find_element_by_android_uiautomator(class_text).click()
    
    # resourceId+text组合定位
    id_text = 'resourceId("com.fenbi.android.solar:id/couponValue").text("150")'
    driver.find_element_by_android_uiautomator(id_text).click()

    父子定位childSelector

    # 父子定位childSelector
    son_ele = 'className("android.widget.LinearLayout").childSelector(text("数学"))'
    driver.find_element_by_android_uiautomator(son_ele).click()

    兄弟定位fromParent

    # 兄弟定位fromParent
    bro_ele = 'resourceId("com.fenbi.android.solar:id/tutor_tab").fromParent(text("发现"))'
    driver.find_element_by_android_uiautomator(bro_ele).click()

    参考:https://www.cnblogs.com/yoyoketang/p/7833554.html

  • 相关阅读:
    Opaque data type--不透明类型
    swift class的动态派发
    swift class的虚函数表
    swift class的虚函数表、扩展、@objc修饰、虚函数的派发方式研究
    swift语言混编--语言交互的接口
    CPU指令分类
    CPU的内部架构和工作原理-原文
    cpu的组成及分工
    简单介绍 CPU 的工作原理
    php7开启强类型模式
  • 原文地址:https://www.cnblogs.com/Maruying/p/13600750.html
Copyright © 2020-2023  润新知