1.继承webdriver的几个常见的定位方法

a.find_element_by_id("id")

b.find_element_by_name() #text值,appium 1.14.0+python 3.7这个方法提示不支持

c.find_element_by_className()

2.appium拓展方法

这里以微信会话界面为例

a.find_element_by_android_uiautomator('new UiSelector().text("")')

#device_a.find_element_by_android_uiautomator('new UiSelector().text("CYDtest594")').click()

#device_a.find_element_by_android_uiautomator('new UiSelector().textContains("CYD")').click()

#device_a.find_element_by_android_uiautomator('new UiSelector().textStartsWith("CYD")').click()

device_a.find_element_by_android_uiautomator('new UiSelector().textMatches("CYD(.*)")').click()

b.find_element_by_android_uiautomator('new UiSelector().className("")') 用法可参考a(classNameContains())

find_element_by_android_uiautomator('new UiSelector().classNameContains("")')

c.find_element_by_android_uiautomator('new UiSelector().resourceId("")') #

find_element_by_android_uiautomator('new UiSelector().resourceIdMatches("")') #正则

d.description--(用法同1)

e.find_element_by_accessibility_id content_dec

2.1 一些appium的其他定位方式

a.特殊属性

返回值

API

说明

uiselector

Checked(boolean val)

选择属性

uiselector

Clickable(boolean val)

可点击属性

uiselector

Enabled(boolean val)

Enable属性

uiselector

Focuseable(boolean val)

焦点属性

uiselector

Focused(boolean val)

当前焦点属性

uiselector

Longclickable(boolean val)

长按属性

uiselector

Scrollable(boolean val)

滚动属性

uiselector

Selected(boolean val)

背景选择属性

b.index和instance

索引index指在同级中的编号,在兄弟类中的主键编号。实例instance指的是整个布局文件中的编号,同一个类的同级编号。???

index

device_a.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.LinearLayout")').index(0) # 'WebElement' object has no attribute 'instance'

device_a.find_element_by_android_uiautomator('new UiSelector().className("android.widget.LinearLayout")').index(0) # 也错误

instance()

device_a.find_elements_by_android_uiautomator('new UiSelector().className("android.widget.LinearLayout")').instance(0) #运行提示错误,list has no attribute instance

device_a.find_element_by_android_uiautomator('new UiSelector().className("android.widget.LinearLayout")').instance(0) #运行提示错误,'WebElement' object has no attribute 'instance'

这里其实find_elements返回的是一个list,可以直接使用下标list[]。

c.多个属性

eg.

device_a.find_element_by_android_uiautomator('new UiSelector().className("android.view.View").text("CYDtest594")').click()

3.相对元素定位

childSelector:从当前类往下找符合条件的子类 eg.

device_a.find_element_by_android_uiautomator('new UiSelector().className("android.view.View")').childSelector('new UiSelector().xxx')

fromParent

device_a.find_element_by_android_uiautomator('new UiSelector().className("android.view.View")').fromParent('new UiSelector().xxx') 找object同一父控件的兄弟控件先找到父元素A=

evice_a.find_element_by_android_uiautomator('new UiSelector().className("android.view.View"))

再找A下的子元素A.find_element_by_...

4.xpath定位已微信为例

4.1 属性定位

text定位

#text定位

device.find_element_by_xpath('//*[@text="自助工具"]').click()

resource-id定位 这里的属性值不唯一,为做演示选取了该属性,下面class也是如此。

#resource-id定位

device.find_elements_by_xpath('//*[@resource-id="com.tencent.mm:id/alw"]')[0].click()

class定位

#class定位

device.find_elements_by_xpath('//*[@class="android.widget.TextView"]')[2].click()

也可以写作

device.find_elements_by_xpath('//android.widget.TextView')[2].click()

content-desc定位此属性值为空,不做演练。

4.2contains模糊定位

属性值只有部分值唯一的时候,可以用contains匹配

例如

device.find_element_by_xpath('//*[contains(@text,"自助")]').click()

4.3 组合定位class、content-desc、resource-id、text可以自由组合。

继续以上面的为例:class+text

device.find_element_by_xpath('//android.widget.TextView[@text="自助工具"]').click()

也可写作

device.find_element_by_xpath('//*[@class="android.widget.TextView" and @text="自助工具"]').click()

4.4 层级关系定位

先定位父元素,再去定位子元素,或者定位子元素,再通过子元素找到父元素、定位子元素->找到父元素->兄弟元素

eg.

device.find_element_by_xpath('//android.widget.TextView[@text="自助工具"]/..')

也可写作

device.find_element_by_xpath('//android.widget.TextView[@text="自助工具"]/parent::*')

或者

device.find_element_by_xpath('//android.widget.TextView[@text="自助工具"]parent::android.widget.ListView')

以上为查找子元素的父元素。

device.find_element_by_xpath('//android.widget.TextView[@text="自助工具"]/../android.widget.TextView[@text="冻结账号"]')

查找兄弟元素

python xpath定位元素方法_二、appium+python xpath、android_uiautomator定位元素的方法相关推荐

  1. python三维图切片提取_详解Python二维数组与三维数组切片的方法

    如果对象是二维数组,则切片应当是x[:]的形式,里面有一个冒号,冒号之前和之后分别表示对象的第0个维度和第1个维度: 如果对象是三维数组,则切片应当是x[::],里面有两个冒号,分割出三个间隔,三个间 ...

  2. python爬虫获取方法_小白学python爬虫:2.获得数据

    在上一篇文章我我们已经完成了对网页的分析,包括了:在源码中数据的定位:获取方法(xpath).那么在获得数据之前我们考虑的则是如何获取源码. 接下来我们将学习如何从服务器获得源码. #写在前面&quo ...

  3. python展开函数方法_逐步展开Python详细教学—Python语法

    Python语法–在Python世界迈出第一步 我们已经拥有了许多的编程语言,而且都有自己的特色,但是一种语言的独特之处在于它的特性.最终,是它的特点让它被选中或通过项目.因此,在开始更深入的Pyth ...

  4. python爬取所有数据_入门用Python进行Web爬取数据:为数据科学项目提取数据的有效方法...

    作者|LAKSHAY ARORA 编译|Flin 来源|analyticsvidhya 总览 Web抓取是一种从网站提取数据的高效方法(取决于网站的规定) 了解如何使用流行的BeautifulSoup ...

  5. python方法_详细解读Python中的__init__()方法

    __init__()方法意义重大的原因有两个.第一个原因是在对象生命周期中初始化是最重要的一步:每个对象必须正确初始化后才能正常工作.第二个原因是__init__()参数值可以有多种形式. 因为有很多 ...

  6. python脚本开头怎么写_浅谈Python脚本开头及导包注释自动添加方法

    浅谈Python脚本开头及导包注释自动添加方法 1.开头:#!/usr/bin/python和# -*- coding: utf-8 -*-的作用 – 指定 #!/usr/bin/python 是用来 ...

  7. 以下哪个不是python的内置函数_以下哪个 Python 内置函数可以返回列表对象中元素个数。...

    [多选题]假设 x=[0,1,2,3],执行哪些语句之后,x 的值为[0, 1, 2]. [多选题]以下哪些对象的分隔符为逗号. [单选题]已知列表 x=[0,1,2,1,4],那么执行语句 del ...

  8. python魔法方法学不懂_深入学习Python之魔法方法

    什么是Python魔法方法 魔法方法就如同它的名字一样神奇,总能在你需要的时候为你提供某种方法来让你的想法实现.魔法方法是指Python内部已经包含的,被双下划线所包围的方法,这些方法在进行特定的操作 ...

  9. 如何用python输出九九乘法表_如何用python输出九九乘法表?有哪些方法?

    大家学了学习python这么久,大概都可以将python融汇贯通使用了吧,今天小编就教大家一个案例,融汇python主要的方法内容,一起来看下吧~ 概述 今天主要介绍如何用Python实现九九乘法表( ...

  10. python列表元素求和_如何在python语言使用不同方法实现列表元素求和

    在使用python语言列表时,如果列表中的元素都是数值类型,可以对元素进行求和.下面利用不同的方法实现列表元素求和: 工具/原料 python pycharm 截图工具 方法/步骤 1 第一步,在已创 ...

最新文章

  1. 绘制你的世界:探索构图和真实的深度感
  2. ir指令、立即数的作用_立即数的判断方法一
  3. linux命令重定向、、 1、 2、 1、 2、
  4. 数学建模【统计模型及应用(单-双因素方差分析、一-多元线性回归分析、牙膏价格问题、方差分析与回归分析的SPSS实现)】
  5. Maven配置项目依赖使用本地仓库的方法汇总
  6. mongodb 输出数组字段_MongoDb文档操作、索引操作
  7. 【博客话题】爱上Linux的N+1个理由
  8. MYSQL的C 语言接口
  9. 德鲁伊 oltp oltp_内存中OLTP系列–表创建和类型
  10. 彼得定律与员工职业生涯规划(该提拔谁,职业规划,知人善用)
  11. ORB-SLAM2学习2 KeyFrame.h
  12. Atitit 分布式之道 attilax著 第4章 通信 第7章 一致性和复制 第8章 容错性 第9章 安全性 第10章 基于对象的分布式系统 第11章 分布式文件系统 第12章 基于Web的分
  13. Atitit.  单列索引与多列索引 多个条件的查询原理与设计实现
  14. 使用IBM SPSS Statistics常用图表附例演示讲解
  15. html浅绿色配色效果图大全,纯CSS3渐变色板配色代码
  16. 免费云存储工具类——七牛云(更改配置信息,直接使用)
  17. android 极光推送解绑,app集成极光推送笔记(angular js)
  18. Python数据可视化之散点图和折线图
  19. Android监听消息(一)——应用消息捕获
  20. 【ACL Findings 2021】Does Robustness Improve Fairness? Approaching Fairness with Word Substitution R

热门文章

  1. 什么是编译型语言和解释型语言和他们的优缺点及为什么解释型语言可以跨平台而编译型语言不行
  2. Cocos Creator 3.x 初识Mesh的理解
  3. 微信小程序自定义顶部以及底部tabbar
  4. 多web站点统一访问授权管理中心系统项目(源码)
  5. 十六、MySQL 视图详解
  6. 二叉搜索树的后序遍历序列(Java)
  7. 医院数据‘金矿’待开发数据采集成关键
  8. Selenium-Webdriver系列教程(一)————快速开始
  9. 软件工程学习过程中工具、资料汇总与心得
  10. 手把手教做新疆大盘鸡[图]