uiautomator2 手工翻译版
- pip install --pre uiautomator2
- #或者你可以直接从github源码安装
- git clone https://github.com/openatx/uiautomator2
- pip install -e uiautomator2
- python -m uiautomator2 init
- 1、安装apk:python -m uiautomator2 install $ device_ip https://example.org/some.apk
- 2、清缓存:python -m uiautomator2
- 3、停止所有应用:python -m uiautomator2 app-stop-all $ device_ip
- 4、截图:python -m uiautomator2截图$ device_ip screenshot.jpg
- 5、检查守护线程:d.healthcheck()
- 6、打开调试:d.debug = true
- 7、获取连接信息:d.info
- 8、shell命令:d.adb_shell(' pwd ')
- 9、分辨率:d.window_size()
- 10、查看当前应用信息:d.current_app()
- 11、查看序列号:d.serial
- import uiautomator2 as u2
- #通过WIFI
- d = u2.connect('10.0.0.1') # alias for u2.connect_wifi('10.0.0.1')
- #通过usb获取 devices
- d = u2.connect('123456f') # alias for u2.connect_usb('123456f')
- 1、安装,只指出url:d.app_install(' http://some-domain.com/some.apk ')
- 2、启动:d.app_start(“ com.example.hello_world ”)#以包名称开头
- 3、停止应用:d.app_stop( “ com.example.hello_world ”)或者d.app_clear( ' com.example.hello_world ')
- 4、停止所有应用:d.app_stop_all()
- 5、推送一个文件到手机:d.push( “ foo.txt的”, “ / SD卡/ ”)
- 6、推和重命名 :d.push( “ foo.txt的”, “ /sdcard/bar.txt ”)
- 7、推送并更改文件模式:d.push("foo.sh", "/data/local/tmp/", mode=0o755)
- 8、从设备中拉取文件:d.pull(“/ sdcard/tmp.txt ”,“ tmp.txt ”)#如果文件在设备上找不到,FileNotFoundError将会出现
- d.pull(“/ sdcard/some-file-not-exists.txt ”,“ tmp.txt ”)
- 1、启动应用:sess = d.session(“ com.netease.cloudmusic ”
- 2、会话连接运行中的程序:sess = d.session(“ com.netease.cloudmusic ”
- 3、检测应否崩溃:sess(text="Music").click()
- 4、检查会话是否正常:sess.running()
- 1、d.screen_on()#打开屏幕 d.screen_off()#关闭屏幕
- 2、获取当前屏幕状态:d.info.get(' screenOn ‘)# android 4.4
- 3、按软/硬件
- d.press("home") #按home键,用键名
- d.press("back") #按返回键,与主要的名称
- d.press(0x07, 0x02) #按下键码0×07(” 0')与META ALT(0x02)
- 这些目前支持:
- home
- back
- left
- right
- up
- down
- center
- menu
- search 搜索
- enter 输入
- delete(or del)删除
- recent(recent apps)
- volume_up 提高音量
- volume_down 减小音量
- volume_mute 关闭声音
- camera 相机
- power
- 4、解锁屏幕d.unlock()
- 支持百分比d.long_click(0.5, 0.5)
- 1、点击屏幕:d.click(x,y)
- 2、长按屏幕:d.long_click(x,y)或d.long_click(x,y,0.5)#长按0.5s(默认)
- 3、拖动:d.drag(sx,sy,ex,ey)或d.drag(sx,sy,ex,ey,0.5)#刷新0.5s(默认)
- 4、刷卡:d.swipe(sx,sy,ex,ey)或d.swipe(sx,sy,ex,ey,0.5)#刷新0.5 秒(默认)
- 5、滑动:#由点划动(X0,Y0)到点(X1,Y1),然后到点(X2,Y2)
- #时间将加速0.2秒bwtween两点
- d.swipe((X0,Y0),(X1,Y1),( x2,y2), 0.2)
- 1、获取方向:d.orientation
- 2、设置方向:d.set_orientation('l')
- 值:natural 或者 n
- left 或者 l
- right 或者 r
- upsidedown 或者 u (不能设置)
- 3、不能选择/解冻:d.freeze_rotation()#冻结旋转 d.freeze_rotation( False)
- 4、截屏:image = d.screenshot() #支持png和jpg
- image.save("home.jpg")
- 5、截屏:这个不知道什么意思
- import cv2
- image = d.screenshot(format='opencv')
- cv2.imwrite('home.jpg', image)
- 6、屏幕UI转xml:xml = d.dump_hierarchy()
- 7、打开通知或快速设置:d.open_notification() d.open_quick_settings()
- 1、选择:d(text='Clock', className='android.widget.TextView')
- 2、获取孩子或孙子:d( className = “ android.widget.ListView ”).child( text = “ Bluetooth ”)
- 3、兄弟姐妹:d(text="Google").sibling(className="android.widget.ImageView")
- 4、获取子节点根据文本:d(className="android.widget.ListView", resourceId="android:id/list") \
- .child_by_text("Bluetooth", className="android.widget.LinearLayout")
- 5、获取子节点根据文本允许滚动搜素:d(className="android.widget.ListView", resourceId="android:id/list") \
- .child_by_text("Bluetooth",allow_scroll_search=True,className="android.widget.LinearLayout")
- 6、支持多级:d(className = “ android.widget.ListView ”,resourceId = “ android:id / list ”)\
- .child_by_text(“ Wi-Fi ”,className = “ android.widget.LinearLayout ”)\
- .child(className = “ android .widget.Switch “)\ .click
- ()
- 7、支持相对定位:
- • d(A).left(B),在A的左侧选择B.
- • d(A).right(B),在A的右侧选择B.
- • d(A).up(B),在A之上选择B.
- • d(A).down(B),在A下选择B.
- d(text="Wi‑Fi").right(className="android.widget.Switch").click()
- 8、第一个文本带有“Add new”的实例:d(text = “ Add new ”,instance = 0)
- 9、在屏幕上查找:d(text="Add new").count
- d(text="Add new”)[0]#第一个
- d(text="Add new”)[1]#第二个
- 10、显示控件信息:view.info
- 11、检查控件是否存在:d(text = “ Settings ”).exists或者d.exists(text = “ Settings ”)
- 12、检查控件信息:d(text = “设置”).info
- 13、文本控件操作:
- d(text = “ Settings ”).get_text() #获取小部件文本
- d(text = “ Settings ”).set_text(“ My text ... ”) #设置文本
- d(text = “ Settings ”).clear_text ) #清除文字
- 14、点击:
- d( text = “ Settings ”).click()
- #等待元素出现最多10秒钟,然后点击
- d( text = “ Settings ”).click( timeout = 10)
- #点击的别名
- d(文本= “设置”).tap()
- 15、长按:d( text = “ Settings ”).long_click()
- 16、拖动元素到另一个位子:
- d( text = “ Settings ”).drag_to(x,y, duration = 0.5)
- d( text = “ Settings ”).drag_to( text = “ Clock ”, duration = 0.25)#clock的中心点
- 17、从一点到另一点的两点手势
- d(text = “ Settings ”).gesture((sx1,sy1),(sx2,sy2),(ex1,ey1),(ex2,ey2))
- 18、特定UI对象上的两点手势
- • In,从边缘到中心
- • Out,从中心到边缘
- #从边缘到中心。这里是“以”不“在”
- d(text="Settings").pinch_in(percent=100, steps=10)
- #从中心到边缘
- d(text="Settings").pinch_out()
- 19、等待ui出现或消失
- d(text="Settings").wait(timeout=3.0) # return bool
- d(text="Settings").wait_gone(timeout=1.0)
- 20、#设置默认元素等待超时(秒)
- d.wait_timeout = 30.0
- 21、控件不知道控件的情况下
- d.set_fastinput_ime(True)#切换成FastInputIME输入法
- d.send_keys(“你好123abcEFG ”)# adb广播输入
- d.clear_text()#清除输入框所有内容(需要android-uiautomator.apk版本> = 1.0.7 )
- d.set_fastinput_ime(False)#切换成正常的输入法
- 22、显示:Toast
- d.make_toast("Hello world")
- d.make_toast("Hello world", 1.5) # show for 1.5s
- 控制台:adb shell am instrument -w -r -e debug false -e class com.github.uiautomator.stub.Stub \
- com.github.uiautomator.test/android.support.test.runner.AndroidJUnitRunner
uiautomator2 手工翻译版的更多相关文章
- SWFUpload 2.5.0版 官方说明文档 中文翻译版
原文地址:http://www.cnblogs.com/youring2/archive/2012/07/13/2590010.html#setFileUploadLimit SWFUpload v2 ...
- PHPExcel中文开发手册翻译版(2)
2016年8月18日12:45:14 请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 PHPExcel开发者文档 1.目录 2. 4先决条件 2.1.软件要求4 2.2.安装说明4 2 ...
- PHPExcel中文开发手册翻译版(1)
请注意这个是粗翻译版,仅供参考,不是精校版 精校版后面才会更新 英文原版在线文档 https://github.com/PHPOffice/PHPExcel/wiki/User%20Documenta ...
- ABP 教程文档 1-1 手把手引进门之 AngularJs, ASP.NET MVC, Web API 和 EntityFramework(官方教程翻译版 版本3.2.5)含学习资料
本文是ABP官方文档翻译版,翻译基于 3.2.5 版本 转载请注明出处:http://www.cnblogs.com/yabu007/ 谢谢 官方文档分四部分 一. 教程文档 二.ABP 框架 三. ...
- redis命令参考和redis文档中文翻译版
找到了一份redis的中文翻译文档,觉得适合学习和查阅.这份文档翻译的真的很良心啊,他是<Redis 设计与实现>一书的作者黄健宏翻译的. 地址:http://redisdoc.com/i ...
- tcpdf开发文档(中文翻译版)
2017年5月3日15:06:15 这个是英文翻译版,我看过作者的文档其实不太友善或者不方便阅读,不如wiki方便 后面补充一些,结构性文档翻译 这是一部官方网站文档,剩余大部分都是开发的时候和网络总 ...
- 基于R语言的结构方程:lavaan简明教程 [中文翻译版]
lavaan简明教程 [中文翻译版] 译者注:此文档原作者为比利时Ghent大学的Yves Rosseel博士,lavaan亦为其开发,完全开源.免费.我在学习的时候顺手翻译了一下,向Yves的开源精 ...
- 《FontForge常见问题FAQ》字王翻译版
<FontForge常见问题FAQ> 字王翻译版 原文: http://fontforge.github.io/en-US/faq/ 翻译: 字王·中国 blog: http://bl ...
- Mastering MariaDB 神秘的MariaDB 中文翻译版
是某群的哥们义务翻译的,宣传一下,还没时间时间读,粗滤看了全部翻译完了300多页佩服 https://github.com/CMant/Mastering-MariaDB- 原地址:如果你需要读,请s ...
随机推荐
- java 错误: 找不到或无法加载主类
这个问题应该很常见的,笔者经常手工编译一些测试代码或者小工具,经常用到 javac和java来编译并运行一些简单的小工具. 以Hello World来测试. HelloWorld.java publi ...
- 在iframe框架中全屏不好使的原因
遇到的问题:我是在iframe框架中添加了一个插件在360和火狐中不好使,将allowfullscreen="true" 属性配置好就没问题了: 可能出现的原因:将allowful ...
- 关闭文件描述符-close
头文件:#include<unistd.h> 原型:int close(int fd); 返回值:成功返回0,失败返回-1.
- jQuery使用大全
我的程序人生 提供基于Lesktop的IM二次开发,联系QQ:76159179 CnBlogs Home New Post Contact Admin Rss Posts - 476 Article ...
- Linux服务器部署系列之一—Apache篇(下)
接上篇 linux服务器部署系列之一—Apache篇(上) 四.管理日志文件 Apache日志分为访问日志和错误日志两种: 1)访问日志 用于记录客户端的访问信息,文件名默认为access_lo ...
- IP之ALTDDIO_in仿真
需要添加altera_mf库,才可以仿真. 上升沿输出,把前一个时钟的数据输出来. `timescale 1 ns/ 1 ns; module altddio_in_ip_tb; reg rst; r ...
- Nios ii调试问题集
如果定义了一个类的.hpp,而在相应的.cpp中定义其中的函数时,根本找不到定义的类,这说明类在定义时出错,要注意类括号后的冒号. 2. 问题1:NiosII/Eclipse 中遇到“Launchin ...
- SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片
SpringMVC上传图片总结(2)--- 使用百度webuploader上传组件进行上传图片 在上一篇文章中,我们介绍了< SpringMVC上传图片的常规上传方法 >.本文接着第一 ...
- Amazon成本和产出的衡量方式
Amazon用一种T-Shirt Size 估计的方式来做项目. 产品经理会对每一条需求评估上业务影响力的尺寸,如:XXXL 影响一千万人以上或是可以占到上亿美金的市场,XXL,影响百万用户或是占了千 ...
- java web中如何获取spring容器中定义的bean----WebApplicationContext的使用
本文简单编写一个servlet来获取spring容器中管理的<bean id="dateBean" class="java.util.Date" sin ...