appium定位app上的元素方式 在前面文章中有介绍,(通过UIautomator工具查看app元素)

appium定位app上的元素,可以通过id,name,class这些属性定位到

1、id 定位,是需要找到元素的 resource-id属性

格式:driver.find_element_by_id("resource-id属性值")

2、name 定位,是要找到元素的 text属性

格式:driver.find_element_by_name("text属性值")

3、class 定位,是要找到元素的class属性

格式:driver.find_element_by_class_name("class属性值")

4、accessibility_id 定位,是要找到元素的content-desc属性

格式:driver.find_element_by_accessibility_id("content-desc属性值")

5、xpath 定位

这儿以秀动app为例,定位风格推荐的“更多”按钮

①如果元素text是唯一的,可以通过text文本定位

格式: //*[@text='text文本属性值']

eg:driver.find_element_by_xpath("//*[@text='更多']").click()

②如果元素id是唯一的,可以通过id属性定位

格式://*[@resource-id='resource-id属性值']

eg:driver.find_element_by_xpath("//*[@resource-id='com.showstartfans.activity:id/tv_style_more']").click()

可以联合@resource-id属性和@text文本属性定位

driver.find_element_by_xpath("//*[@resource-id='com.showstartfans.activity:id/tv_style_more'][@text='更多']").click()

③如果class属性唯一,也可以通过class属性定位(有两种方法)

a、第一种:   格式:   //class属性值

eg:driver.find_element_by_xpath("//android.widget.TextView").click()

b、第二种:   格式:  //*[@class='class属性值']

eg:driver.find_element_by_xpath("//*[@class='android.widget.TextView']").click()

④通过content-desc属性定位

格式: //*[@content-desc='desc的属性值']

eg:driver.find_element_by_xpath("//*[@content-desc='XXX']").click()

⑤contains 模糊定位

contains是模糊匹配的定位方法,对于一个元素的id或者text不是固定的,但有一部分是固定的,这种就可以模糊匹配

格式://*[contains(@content-desc, ‘属性值’)]

//*[contains(@resource-id, ‘属性值’)]

//*[contains(@clsss, ‘属性值’)]

⑥组合定位

如果一个元素有2个属性,通过xpath也可以同时匹配2个属性,text, resource-id,class ,index,content-desc这些属性都能任意组合定位

# id和class属性   定位“更多”
id_class = '//android.widget.TextView[@resource-id="com.showstartfans.activity:id/tv_style_more"]'
driver.find_element_by_xpath(id_class).click()
time.sleep(3)
driver.back() # text和index属性 定位注册
desc_class = '//*[@text="注册账号" and @index="5"]'
driver.find_element_by_xpath(desc_class).click()
time.sleep(3) # class和text属性 定位输入手机号
class_text = '//android.widget.EditText[@text="请输入手机号码"]'
driver.find_element_by_xpath(class_text).send_keys("")
time.sleep(3) # class和desc 定位
id_desc = '//*[contains(@resource-id, "xxx") and @content-desc="xxx1"]'
driver.find_element_by_xpath(id_desc).click()

注意事项:

1、如果元素的resource-id,text,class,content-desc属性值为空,那么就不能通过该相关方式定位

2、一般一个页面上的class属性不唯一,元素不唯一的话定位会报错了,非必要条件下,建议不使用class属性定位

3、appium1.5以下老的版本是可以通过name定位的,新版本从1.5以后都不支持name定位了

Appium+Python自动化 4 -appium元素定位的更多相关文章

  1. Appium+python自动化-查看app元素属性

    本文转自:https://www.cnblogs.com/yoyoketang/p/7581831.html 前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道 ...

  2. appium+python自动化34-获取元素属性get_attribute

    获取text # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platform ...

  3. Selenium2+python自动化-八种元素定位(Firebug和Firepath)

    前言    自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位.元素定位在这四个环节中 ...

  4. Python自动化中的元素定位xpath(二)

    1.Xpath元素定位 1)ele = b.find_element_by_xpath(‘/html/body/from/input[1]’) 2)Ele = b.find_element_by_xp ...

  5. Appium+python自动化3-定位元素

    3.1常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个我只 ...

  6. appium+python自动化:获取元素属性get_attribute

    使用get_attribute()获取元素属性,括号里应该填写什么? 查看appium源码 如果是获取resource-id,填写resourceId self.driver.find_element ...

  7. Python自动化中的元素定位(一)

    1.使用selenium中的webdriver模块对浏览器进行操作 1)from selenium import webdriver 加载模块 2)b = webdriver.Friefox() 打开 ...

  8. Appium+python自动化

    名称 链接地址 Appium+python自动化8-Appium Python API(上) http://mp.weixin.qq.com/s/WvpT5oRrYY22avI95FuypQ Appi ...

  9. Appium+python自动化20-查看iOS上app元素属性

    前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...

随机推荐

  1. pyqt5 -——基本功能(HelloWorld)

    一. 简单窗口 这个简单的小例子展示的是一个小窗口.但是我们可以在这个小窗口上面做很多事情,改变大小,最大化,最小化等,这需要很多代码才能实现.这在很多应用中很常见,没必要每次都要重写这部分代码,Qt ...

  2. 字母导航跳转react核心代码

    componentDidMount() { this.move(); } skipToDep(e) { let dom = document.getElementById(e); // 获取要跳至的字 ...

  3. Java框架spring 学习笔记(七):Spring相关概念

    Spring是开源.轻量级.一站式框架. Spring核心主要两部分 aop:面向切面编程,扩展功能不是修改源代码实现. ioc:控制反转,把对象的创建交给Spring进行配置,比如一个类,在类里面有 ...

  4. [转]11个教程中不常被提及的JavaScript小技巧

    原文地址: https://www.cnblogs.com/ld1024/p/10723827.html 这次我们主要来分享11个在日常教程中不常被提及的JavaScript小技巧,他们往往在我们的日 ...

  5. spring mvc 参数绑定

    基础类型 原始类型:id必须要传,否则报错. @RequestMapping("/test") @ResponseBody public ResponseData test(int ...

  6. mysql修改联合主键

    参考 https://blog.csdn.net/BockSong/article/details/80933477 alter table TABNAME drop primary key; alt ...

  7. splice的用法

    splice向数组中删除/添加新元素,然后返回新数组 arrObject.splice(index,howmany,item1,...,itemx); 参数 描述 index 必需.整数,规定添加/删 ...

  8. byte -> int

    传送门 传送门2 以下copy: int i = 0;   i += ((b[0] & 0xff) << 24);   i += ((b[1] & 0xff) <&l ...

  9. SUBMIT WITHOUT ALV

    data:seltab type table of rsparams, seltab_wa like line of seltab. define add_seltab. if &1 is n ...

  10. Echart遇到的问题:tooltip提示框大小异常

    将Echart图表放到项目中,发现当鼠标放到柱状图上时,提示框显示大小超出了div的大小. 官方的文档对于tooltip的说明也没有指出:如何修改大小. 那么tooltip是什么呢? fn+f12打开 ...