Appium+Python自动化 4 -appium元素定位
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元素定位的更多相关文章
- Appium+python自动化-查看app元素属性
本文转自:https://www.cnblogs.com/yoyoketang/p/7581831.html 前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道 ...
- appium+python自动化34-获取元素属性get_attribute
获取text # coding:utf-8 from appium import webdriver from time import sleep desired_caps = { 'platform ...
- Selenium2+python自动化-八种元素定位(Firebug和Firepath)
前言 自动化只要掌握四步操作:获取元素,操作元素,获取返回结果,断言(返回结果与期望结果是否一致),最后自动出测试报告.本篇主要讲如何用firefox辅助工具进行元素定位.元素定位在这四个环节中 ...
- Python自动化中的元素定位xpath(二)
1.Xpath元素定位 1)ele = b.find_element_by_xpath(‘/html/body/from/input[1]’) 2)Ele = b.find_element_by_xp ...
- Appium+python自动化3-定位元素
3.1常用定位方法讲解 对象定位是自动化测试中很关键的一步,也可以说是最关键的一步,毕竟你对象都没定位那么你想操作也不行.所以本章节的知识我希望大家多动手去操作,不要仅仅只是书本上的知识,毕竟这个我只 ...
- appium+python自动化:获取元素属性get_attribute
使用get_attribute()获取元素属性,括号里应该填写什么? 查看appium源码 如果是获取resource-id,填写resourceId self.driver.find_element ...
- Python自动化中的元素定位(一)
1.使用selenium中的webdriver模块对浏览器进行操作 1)from selenium import webdriver 加载模块 2)b = webdriver.Friefox() 打开 ...
- Appium+python自动化
名称 链接地址 Appium+python自动化8-Appium Python API(上) http://mp.weixin.qq.com/s/WvpT5oRrYY22avI95FuypQ Appi ...
- Appium+python自动化20-查看iOS上app元素属性
前言 学UI自动化首先就是定位页面元素,玩过android版的appium小伙伴应该都知道,appium的windows版自带的Inspector可以定位app上的元素 Mac版的appium1.6的 ...
随机推荐
- 1_Python历史及入门
前提:简述CPU 内存 硬盘 操作系统 应用程序CPU:计算机的运算核心和控制核心,好像人类的”大脑“内存:负责数据与CPU直接数据交流处理,将临时数据和应用程序加载到内存,然后在交由CPU处理. 造 ...
- [记录] Vue中的dom操作
使用过Vue的同学都应该有这样一个感觉,在vue中页面是基于数据驱动的,不需要我们自己操作dom,框架帮我们完成了这一步,事实上Vue官方也建议我们这样做 在绝大多数情况下是不需要操作dom就可以完成 ...
- FutureTask原理解析
原文链接:http://www.studyshare.cn/blog-front/blog/details/1130 首先写一个简单的Demo public static void main(Stri ...
- java过滤emoji表情
import java.util.regex.Matcher; import java.util.regex.Pattern; public class test { /** * 表情过滤 * */ ...
- ArcPy开发教程2-管理地图文档1
联系方式:谢老师,135-4855-4328,xiexiaokui#qq.com ArcPy开发教程2-管理地图文档1 第二次课:2019年2月26日上午第二节 讲解: 地图文档:Map docume ...
- ARTS打卡计划第一周-Tips-ControllerAdvice的使用
通常在开发具体项目过程中我们可能会面临如下问题: 统一所有的json返回结果 统一处理所有controller中的异常,并且给不同异常不同的返回状态值 统一对返回的接口做数据校验或者加密,防止篡改 在 ...
- tensorflow models api:ValueError: Tensor conversion requested dtype string for Tensor with dtype float32: 'Tensor("arg0:0", shape=(), dtype=float32, device=/device:CPU:0)'
tensorflow models api:ValueError: Tensor conversion requested dtype string for Tensor with dtype flo ...
- java课程之团队开发冲刺1.4
一.总结昨天进度 1.昨天任务全部完成 二.遇到的问题 1.对数据库的使用陌生 2.使用sqlite有些困难 3.对如何解决查询课程问题暂时没有找到好的解决方案 三.今日任务 1.由于周一的课程比较紧 ...
- python之字典及其方法---整理集
字典 特点: 使用逗号分隔的key:value形式: 使用大括号括起来: key-value的键值对中,value部分可以是任意类型: 列表.字典不能做为字典的key: 字典是无序的,哪个key-va ...
- python 获取随机字母
Python2 #-*- coding:utf- -*- import string #导入string这个模块 print string.digits #输出包含数字0~9的字符串 print st ...