uiautomator2进阶

点击控件的具体位置

d(text="Settings").click(offset=(0.5, 0.5))   点击控件的中间位置

d(text="Settings").click(offset=(0, 0))  点击控件的左上方

d(text="Settings").click(offset=(1, 1)) 点击控件的右下方

拖动控件

d(text="Settings").swipe("right") d(text="Settings").swipe("left", steps=10) d(text="Settings").swipe("up", steps=20) d(text="Settings").swipe("down", steps=20)
# 1 steps is about 5ms, so 20 steps is about 0.1s

特定UI对象上的两点手势从边缘到中心向外,从中心到边缘


# 从边缘到中心
d(text="Settings").pinch_in(percent=100, steps=10) # 从中心到边缘 d(text="Settings").pinch_out()
等待特定的界面出现或者消失
# 等待UI出现
d(text="Settings").wait(timeout=3.0) # return bool # 等待UI消失 d(text="Settings").wait_gone(timeout=1.0)
对特定的UI对象执行Fling(可滚动)默认时间20s
# 向前(默认) 
d(scrollable=True).fling()
# 掷球前水平 d(scrollable=True).fling.horiz.forward() # 垂直向后投掷 d(scrollable=True).fling.vert.backward() # 水平开始 d(scrollable=True).fling.horiz.toBeginning(max_swipes=1000) # 垂直抛向末端 d(scrollable=True).fling.toEnd()

对特定的UI对象执行滚动

水平或垂直

向前或向后,或开始或结束,

# 垂直向前滚动(默认)
d(scrollable=True).scroll(steps=10) # 水平向前滚动 d(scrollable=True).scroll.horiz.forward(steps=100) # 垂直向后滚动 d(scrollable=True).scroll.vert.backward() # 水平 d(scrollable=True).scroll.horiz.toBeginning(steps=100, max_swipes=1000) # 垂直滚动到结尾 d(scrollable=True).scroll.toEnd() # 垂直向前滚动,直到出现特定的UI对象
d(scrollable=True).scroll.to(text="Security")

当选择器找不到匹配项时,uiautomator2将运行所有注册的观察程序,条件匹配时单击目标
d.watcher("AUTO_FC_WHEN_ANR").when(text="ANR").when(text="Wait") \ .click(text="Force Close")
#使用不带参数的click
d.watcher("ALERT").when(text="OK").click()
#same as
d.watcher("ALERT").when(text="OK").click(text="OK")
#当条件为真时按键
d.watcher("AUTO_FC_WHEN_ANR").when(text="ANR").when(text="Wait") \ .press("back", "home")
#检查指定的观察程序是否触发一个观察者被触发,这意味着观察者已经运行并且其所有条件都匹配。
# true in case of the specified watcher triggered, else false

d.watcher("watcher_name").triggered #展示所有watch
d.watchers
#通常可以用来自动点击权限确认框,或者自动安装
d.watcher("OK").when(text="OK").click(text="OK") # enable auto trigger watchers d.watchers.watched = True # disable auto trigger watchers d.watchers.watched = False # get current trigger watchers status assert d.watchers.watched == False
#移除watch
# remove all registered watchers
d.watchers.remove()
# remove the named watcher, same as d.watcher("watcher_name").remove()
d.watchers.remove("watcher_name")

全局设置
#用户每次点击后延迟1.5s
d.click_post_delay = 1.5
#设置默认元素超时时间(s)
d.wait_timeout = 30.0
#输入法
d.set_fastinput_ime(True) # 切换成FastInputIME输入法
d.send_keys("你好123abcEFG") # adb广播输入 d.clear_text() # 清除输入框所有内容(Require android-uiautomator.apk version >= 1.0.7) d.set_fastinput_ime(False) # 切换成正常的输入法 d.send_action("search") # 模拟输入法的搜索
 
uiautomation2哈哈哈哈

 


 
 
 
 
 

转载于:https://www.cnblogs.com/zhujunsheng/p/10452073.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/249542.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

LIS路径记录(UVA481)

出自一次很失败的开学测试 LIS自然会做 可以参见:https://blog.csdn.net/Radium_1209/article/details/79704234 由于对于LIS的nlogn算法不熟悉,导致错误理解,记录的路径出现了问题,其中还用了n^2的算法记录路径(好理解…

Activemq源码、编译、导入idea、源码调试总结

1、在本地下载源码 在GitHub官网搜activemq,找到排名第一的,并打开,如图所示,拷贝url地址。 activemq托管地址:https://github.com/apache/activemq.git 切换到git bash下,输入命令: mkdir a…

activiti 视图

1. application.properties增加如下配置 spring.activiti.database-schema-updatefalsespring.activiti.db-history-usedfalsespring.activiti.db-identity-usedfalse 2. 视图sql -- 修改表名称 ALTER TABLE act_id_user RENAME act_id_user_bak1; ALTER TABLE act_id_group RE…

ActiveMQ源码解析 建立连接

作为一个消息中间件,有客户端和服务端两部分代码,这次的源码解析系列主要从客户端的代码入手,分成建立连接、消息发送、消息消费三个部分。趁着我昨天弄明白了源码编译的兴奋劲头还没过去,今天研究一下建立连接的部分。 如果读起…

原生Js_实现广告弹窗

广告样式当页面加载后5s刷新在右下角 <!DOCTYPE html> <html><head><meta charset"utf-8" /><title>Gary图片轮播</title><style type"text/css">#ad{width:300px;height: 300px;background-color:antiquewhite…

springcloud注册中心eureka

1、前提 springcloud的注册中心是以springboot为基础搭建起来的。 开发工具&#xff1a;IDEA 项目管理工具&#xff1a;maven 2、搭建步骤 创建一个web项目&#xff08;建议使用IDEA工具构建项目&#xff09;修改pom文件 <dependency><groupId>org.springframework…

Nancy in .Net Core学习笔记 - 视图引擎

前文中我们介绍了Nancy中的路由&#xff0c;这一篇我们来介绍一下Nancy中的视图引擎。 Nancy中如何返回一个视图(View) 在ASP.NET Mvc中&#xff0c;我们使用ViewResult类来返回一个视图。Nancy中也提供了类似的功能, 在NancyModule类中&#xff0c;Nancy提供了一个ViewRendere…

设计模式之组合模式(Composite 模式)

引入composite模式 在计算机文件系统中&#xff0c;有文件夹的概念&#xff0c;文件夹里面既可以放入文件也可以放入文件夹&#xff0c;但是文件中却不能放入任何东西。文件夹和文件构成了一种递归结构和容器结构。 虽然文件夹和文件是不同的对象&#xff0c;但是他们都可以被放…

Ansible批量在远程主机执行命令

Ansible直接执行远程命令&#xff0c;不用ssh登陆交互执行。    如下&#xff1a;    ansible all -i 192.168.199.180, -m shell -a "ifconfig" -u supermap    参数解释&#xff1a;    -i 连接到远程主机“192.168.199.180&#xff0c;”&#xf…

HOJ 2651

一道二分的题目&#xff0c;但要注意不能用double&#xff0c; 并且要注意一下二分的步骤 #include <cstdio> #include <cstring> #include <iostream> #include <algorithm> #define pi 3.1415926535898 #define eps 0.0001 using namespace std; inl…

HierarchicalBeanFactory接口

HierarchicalBeanFactory 提供父容器的访问功能.至于父容器的设置,需要找ConfigurableBeanFactory的setParentBeanFactory(接口把设置跟获取给拆开了!). HierarchicalBeanFactory源码具体&#xff1a; 1、第一个方法返回本Bean工厂的父工厂。这个方法实现了工厂的分层。 2、第…

C++: C++函数声明的时候后面加const

C: C函数声明的时候后面加const 转自&#xff1a;http://blog.csdn.net/zhangss415/article/details/7998123 非静态成员函数后面加const&#xff08;加到非成员函数或静态成员后面会产生编译错误&#xff09;&#xff0c;表示成员函数隐含传入的this指针为const指针&#xff0…

【计蒜客习题】消除字符串

问题描述 蒜头君喜欢中心对称的字符串&#xff0c;即回文字符串。现在蒜头君手里有一个字符串 SS&#xff0c;蒜头君每次都会进行这样的操作&#xff1a;从 SS 中挑选一个回文的子序列&#xff0c;将其从字符串 SS 中去除&#xff0c;剩下的字符重组成新的字符串 SS。 蒜头君想…

HierarchicalBeanFactory

BeanFactory分层 package org.springframework.beans.factory;//分层工厂 public interface HierarchicalBeanFactory extends BeanFactory {//返回工厂的父工厂BeanFactory getParentBeanFactory();//这个工厂中是否包含这个Beanboolean containsLocalBean(String name); }测…

Training a classifier

你已经学习了如何定义神经网络&#xff0c;计算损失和执行网络权重的更新。 现在你或许在思考。 What about data? 通常当你需要处理图像&#xff0c;文本&#xff0c;音频&#xff0c;视频数据&#xff0c;你能够使用标准的python包将数据加载进numpy数组。之后你能够转换这些…

19岁白帽子通过bug悬赏赚到一百万美元--转

出处&#xff1a;https://news.cnblogs.com/n/620858/ 19 岁的 Santiago Lopez 通过 bug 悬赏平台 HackerOne 报告漏洞&#xff0c;成为第一位通过 bug 悬赏赚到一百万美元的白帽子黑客。他的白帽子生涯始于 2015 年&#xff0c;至今共报告了超过 1600 个安全漏洞。他在 16 岁时…

代码分层的设计

分层思想&#xff0c;是应用系统最常见的一种架构模式&#xff0c;我们会将系统横向切割&#xff0c;根据业务职责划分。MVC 三层架构就是非常典型架构模式&#xff0c;划分的目的是规划软件系统的逻辑结构便于开发维护。MVC&#xff1a;英文即 Model-View-Controller&#xff…

【24小时内第四更】为什么我们要坚持写博客?

前言 从2018年7月份&#xff0c;我开始了写作博客之路。开始之前&#xff0c;我打算分享下之前的经历。去年初公司来了个架构师&#xff0c;内部分享过docker原理&#xff0c;TDD单元测试驱动&#xff0c;并发并行异步编程等内容&#xff0c;让我着实惊呆了&#xff0c;因为确实…

sqoop快速入门

转自http://www.aboutyun.com/thread-22549-1-1.html 转载于:https://www.cnblogs.com/drjava/p/10473297.html

ListableBeanFactory接口

ListableBeanFactory获取bean时,Spring 鼓励使用这个接口定义的api. 还有个Beanfactory方便使用.其他的4个接口都是不鼓励使用的. 提供容器中bean迭代的功能,不再需要一个个bean地查找.比如可以一次获取全部的bean(太暴力了),根据类型获取bean.在看SpringMVC时,扫描包路径下的…