zoukankan      html  css  js  c++  java
  • 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()表示从元素的父元素下查找

  • 相关阅读:
    使用MaxCompute Java SDK 执行任务卡住了,怎么办?
    通过编辑文件的方式对DNS服务器进行配置
    2009级计算机应用 嵌入式方向课表
    微软首宗针对中国大企业盗版案宣判:获赔217万
    小數點的運算[討論區- PHP新手區] : 台灣PHP聯盟
    Linux C编程一站式学习
    用wget做站点镜像
    2008级嵌入式方向学生 学习成果(创意)
    Linux领航未来操作系统
    fedora12 微软雅黑
  • 原文地址:https://www.cnblogs.com/joy-field/p/13451384.html
Copyright © 2011-2022 走看看