• appium元素定位方式


    Appium元素定位方法介绍及应用:
    通过上面两种工具,可以获取元素的相关信息;在appium中提供了一系列
    的元素定位API,通过在这些API中输入指定的元素信息,就能完成元素定位,
    定位元素后就进行对元素进行自动操作。


    基本元素定位API如下:
    1、ID定位(取resource-id、id、name)
    driver.find_element_by_id('')
    2、class定位(取class)
    driver.find_element_by_class_name('')
    3、AccessibilityId定位(取content-desc)
    driver.find_element_by_accessibility_id('')
    备注:其中name方式(取text)已不支持

    Xpath定位方法:

    1、绝对路径:
    元素的全路径,包含了全部节点。这种方法写起来很长,效率不高;另一
    方面由于涉及到太多层,一旦中间任何一层有变动,那元素就定位不到了

    2、使用 属性 定位:
    text属性:
    driver.find_element_by_xpath('//类名[@text=text值]')
    resource-id属性:
    driver.find_element_by_xpath('//类名[@resource-id=属性值]')
    content-desc属性:
    driver.find_element_by_xpath('//类名[@content-desc=属性值]')
    class属性:
    driver.find_element_by_xpath('//类名')
    多属性:and 表示并且 or表示或者
    driver.find_element_by_xpath('//类名[@属性名=属性值 and/or @属性名=属性
    值]')
    备注:
    1、所有元素的属性都可以进行定位,但必须该属性的值是界面上唯一的
    2、xpath支持 * 代表任意个字符 ,比如find_element_by_xpath('//*[@text=text
    值]') ,这种用法容易同时识别多个元素

    3、使用 部分属性内容 定位:
    当元素的属性值过长或者元素属性值内容中存在动态变化的情况下,可以使
    用该方法。
    起始位置匹配:starts-with()
    driver.find_element_by_xpath('//类名[starts-with(@属性名,部分属性值)]')
    包含匹配:contains()
    driver.find_element_by_xpath('//类名[contains(@属性名,部分属性值)]')
    末尾位置匹配:ends-with()
    driver.find_element_by_xpath('//类名[ends-with(@属性名,部分属性值)]')

    uiautomator方法定位app元素:
    appium在android端是调用其底层的UIAutomator2自动化测试框架去驱动自
    动化,在定位元素的时候,可以借助UIAutomator2的语法来实现定位。在代码
    实现上提供的API是find_element_by_android_uiautomator。
    1、根据text定位:
    find_element_by_android_uiautomator('text("值")')
    find_element_by_android_uiautomator('new UiSelector().text("值")')
    text定位相关函数:
    textContains:模糊匹配文本
    textStartsWith:以某个文本开头来匹配
    textMatches:正则匹配

    2、根据resourceId定位:
    find_element_by_android_uiautomator('resourceId("值")')
    find_element_by_android_uiautomator('new UiSelector().resourceId("值")')
    3、根据className定位: 关键字 className
    4、根据contenet-des定位: 关键字 description
    5、组合定位(类名和文本):
    new UiSelector().className("类名").text("值")
    其它组合定位方式类推

    6、根据元素关系定位:
    1)后代元素定位
    使用条件:子元素属性不定,不唯一,只能通过父元素来定位
    new UiSelector().resourceId("值").childSelector(className("值").instance(数字))

    解释:
    其中childSelector可以传入resourceId、description等方法,instance表示匹配的结果所有元素里面的第几个元素,从0开始计数

    new UiSelector().resourceId("父元素的属性值").childSelector(className("被定位的子元素元素的属性值").instance(索引))


    2)兄弟元素定位
    通过子元素找到父元素,然后通过父元素再去找兄弟元素
    new UiSelector().resourceId("值").fromParent(text("值"))

    解释:new UiSelector().resourceId("子元素属性值").fromParent(text("兄弟元素的属性值(定位的元素的属性值)"))

    fromParent()表示从元素的父元素下查找

  • 相关阅读:
    51Nod-1006【LCS】+【输出路径】模板题
    POJ 2250 Compromise【LCS】+输出路径
    洛谷 P1387 最大正方形 【dp】(经典)
    【hdu】4521 小明序列【LIS变种】【间隔至少为d】
    HDU 1025 城市供应 【LIS】
    hdu 2191 悼念512汶川大地震遇难同胞 【多重背包】(模板题)
    HDU 2159 FATE【二维完全背包】
    POJ 1384 Piggy-Bank【完全背包】+【恰好完全装满】(可达性DP)
    洛谷 P1474 货币系统 Money Systems(经典)【完全背包】+【恰好装满的最大方案数量】
    洛谷 P1057 传球游戏 【dp】(经典)
  • 原文地址:https://www.cnblogs.com/joy-field/p/13451384.html
Copyright © 2020-2023  润新知