IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Python知识库 -> python-App自动化测试框架——uiautomator2之UI元素定位和操作 -> 正文阅读

[Python知识库]python-App自动化测试框架——uiautomator2之UI元素定位和操作

目录

元素定位

根据prop结构词定位

子元素和兄弟定位

相对定位

XPATH定位

元素常用API

操作

模拟九宫格解锁(六点连线)


元素定位

根据prop结构词定位

ui2支持 android 中 UiSelector 类中的所有定位方式:https://developer.android.google.cn/reference/android/support/test/uiautomator/UiSelector

名称描述
texttext是指定文本的元素
textContainstext中包含有指定文本的元素
textMatchestext符合指定正则的元素
textStartsWithtext以指定文本开头的元素
classNameclassName是指定类名的元素
classNameMatchesclassName类名符合指定正则的元素
descriptiondescription是指定文本的元素
descriptionContainsdescription中包含有指定文本的元素
descriptionMatchesdescription符合指定正则的元素
descriptionStartsWithdescription以指定文本开头的元素
checkable可检查的元素,参数为True,False
checked已选中的元素,通常用于复选框,参数为True,False
clickable可点击的元素,参数为True,False
longClickable可长按的元素,参数为True,False
scrollable可滚动的元素,参数为True,False
enabled已激活的元素,参数为True,False
focusable可聚焦的元素,参数为True,False
focused获得了焦点的元素,参数为True,False
selected当前选中的元素,参数为True,False
packageNamepackageName为指定包名的元素
packageNameMatchespackageName为符合正则的元素
resourceIdresourceId为指定内容的元素
resourceIdMatchesresourceId为符合指定正则的元素
index元素索引
instance

子元素和兄弟定位

子元素定位

child()

ele = d(resourceId='com.cctv.yangshipin.app.androidp:id/home_main_layout')
ele.child(text='时事',index=0).click()
# ele.child_selector(text='时事',index=0).click()   # 同.child()
# ele.child_by_text('军事',allow_scroll_search=True).click()
# ele.child_by_instance()
# ele.child_by_description()

兄弟元素定位

sibling()

element = d(textContains='美食天下', className='android.widget.TextView')
element.sibling(text='相册').click()

相对定位

相对定位可以定位在某个元素前后左右的其他元素,括号里面可以添加相对定位的目标元素结构词方法,也可以不添加,如果不添加则默认选择对应位置的第一个目标元素

element = d(textContains='美食天下', className='android.widget.TextView')

element.left(text='手机管家').click()
element.right(text='手机管家').click()
element.up(text='手机管家').click()
element.down(text='手机管家').click()

XPATH定位

xpath表达式同web:https://blog.csdn.net/JBY2020/article/details/111301327

注意:在xpath定位中,ui2中的元素prop结构词 description 定位需要替换为content-desc,resourceId 需要替换为resource-id

元素常用API

方法描述返回值备注
exists()判断元素是否存在True,Flase@property装饰的类属性方法
info返回元素的所有信息字典@property装饰的类属性方法
get_text()返回元素文本字符串
set_text(text)设置元素文本None
clear_text()清空元素文本None
center()返回元素的中心点位置(x,y)基于整个屏幕的点

常用API之exists()

1、省略括号使用,exists

  • 如果是连接的手机对象,返回的是一个实例对象
  • 如果是定位元素,返回的是布尔值

2、不省略括号使用exists()

  • 如果是连接的手机对象,返回的是布尔值
  • 如果是定位元素,返回的是布尔值

3、括号中带参

可以传入prop结构词参数,还可以添加超时时间

d = u2.connect('192.168.1.27')
print(d.exists(text='支付宝', timeout=3))  

4、重要使用,可以判断元素是否存在或出现来进行条件分支判断操作

常用API之center()

参数offset表示相对元素所在像素点坐标的比例 ((0,0)元素的左顶点)

# 源码
def center(self, offset=(0.5, 0.5)):
        """
        Args:
            offset: optional, (x_off, y_off)
                (0, 0) means left-top, (0.5, 0.5) means middle(Default)
        # offset:可选,(x_off, y_off)(0,0)表示左顶,(0.5,0.5)表示中间(默认)
        Return:
            center point (x, y)
element = d(textContains='美食天下', className='android.widget.TextView')

print('元素边界坐标位置:',element.info['bounds'])
print(element.center(offset=(0,0)))   # 左顶点
print(element.center(offset=(1,1)))   # 右下点
print(element.center(offset=(0.5,0.5)))  # 中间点

操作

点击、拖动、滑动、长按?

文本输入:? .send_keys('python')

清除文本:? .clear_text()

键盘输入:? .press('enter')? 或? ?.keyevent('enter')? ? ? ?#? keyevent是通过“adb shell input keyevent”方式输入,支持按键更加丰富

切换输入法:??d.set_fastinput_ime()? ? ? ?? #?切换成ui2的输入法会隐藏掉系统原的输入法,括号中的参数为布尔值,当传入False时会使用系统默认输入法,默认为Fasle(使用系统默认的输入法)

模拟输入法功能:d.send_action("search")? ? ? ? ?# 可模拟的功能:go ,search ,send ,next, done ,previous,当press方法无效的时候可以使用?

模拟九宫格解锁(六点连线)

touch类的四种方法:

d.touch.down(100,300)    # 按下
d.touch.sleep(seconds=3.0)   # 参数为按下之后持续的时间长度
d.touch.move(300,500)   # 移动后的位置
d.touch.up(300,500)  # 抬起

方法1:使用touch类方法

d.touch.down(0.536, 0.651).move(0.507, 0.706).move(0.259, 0.853).move(0.729, 0.538).move(0.717, 0.805).move(0.219, 0.725).up(0.219, 0.725)

方法2:使用swipe_points()滑动方法

# 解锁密码,九宫格连线解锁方法下示,如果是数字解锁,使用点击方法click(x,y)即可,points表示不抬起
d.swipe_points([(0.536, 0.651),(0.507, 0.706),(0.259, 0.853),(0.729, 0.538),(0.717, 0.805),(0.219, 0.725)])
  Python知识库 最新文章
Python中String模块
【Python】 14-CVS文件操作
python的panda库读写文件
使用Nordic的nrf52840实现蓝牙DFU过程
【Python学习记录】numpy数组用法整理
Python学习笔记
python字符串和列表
python如何从txt文件中解析出有效的数据
Python编程从入门到实践自学/3.1-3.2
python变量
上一篇文章      下一篇文章      查看所有文章
加:2021-09-06 11:06:03  更:2021-09-06 11:06:43 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/15 13:36:44-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码