python-uiautomator2是一个自动化测试开源工具,仅支持Android平台的原生应用测试。
python-uiautomator2封装了谷歌自带的uiautomator2测试框架,提供便利的python接口。他允许测试人员直接在PC上编写Python的测试代码,操作手机应用,完成自动化,大大提高了自动化代码编写的效率。
以下图片使用Windows画图软件
如图所示,python-uiautomator2主要分为两个部分,python客户端,移动设备
整个过程
pipinstall--pre-Uuiautomator2
首先设备连接到PC,并能够adbdevices发现该设备。
#从github下载atx-agent文件,并推送到手机。在手机上安装包名为`com.github.uiautomator`的apk$python-muiautomator2initsuccess最后提示success,代表atx-agent初始化成功。
python-uiautomator2连接手机的方式有两种,一种是通过WIFI,另外一种是通过USB。两种方法各有优缺点。WIFI最便利的地方要数可以不用连接数据线,USB则可以用在PC和手机网络不在一个网段用不了的情况。
虽然很想用AndroidSDK内置工具uiautomatorviewer.bat,但是运行uiautomator2的时候,uiautomatorviewer.bat运行不起来,两者之间冲突太严重。于是参考着uiautomatorviewer的界面,我又写了一个weditor,调用python-uiautomator2的两个接口screenshot和dump_hierarchy这样就不会有冲突问题了
注:weditor依然处于开发期,功能可能会跟文中描述的有所不同
安装方法:pipinstall--preweditor
下图为网页的截图
重点说下这个部分
先忽略iOS和Neco这两个,直接选择Android。输入框中可以写设备的IP或者设备的Serial(序列号),跟上面提到的配置手机设备参数用法一致。之后点击Connect,如果一切正常就会出现一个绿色的叶子。
页面刷新时,点击蓝色的Reload按钮重新刷新。
定位方式
xpath定位并不支持,一开始打算做支持的,但是发现不用也能搞定。就是代码写的长一点而已。
中文字符的输入如果可以定位到元素,直接通过set_text就可以输入中文
d(text="Settings").set_text("你好")如果定位不到元素需要使用send_keys方法,以及切换输入法
d.set_fastinput_ime(True)d.send_keys("你好Hello")d.set_fastinput_ime(False)#输入法用完关掉截图:d.screenshot("home.jpg")获取图层信息:xml=d.dump_hierarchy()
还有太多太多的操作,我就不写了。更多更详细的API接口文档,直接去Github上看文档吧,记得留下你的Star
_^
火钳占楼
威武
不支持xpath的话有的app是不是不好找控件呢?就楼主说的这4个元素,还是不能满足需求的样子
查询条件还有很多,后面我留了一个链接
不支持xpath可以支持texttextContains这么多方法,总有一款适合你
你可以把报错信息打出来,我这还没见过AndroidO的设备
支持移动端webview吗
webview用selenium就好了
还有太多太多的操作,我就不写了。看Github上的文档吧,绝对比我现在写的要好和全这个我不是十分赞同。
github上就没介绍weditor……
没init
不错,之前看着uiautomator2仅支持java,我的头就大了。因为写着Java效率太低。
执行python-mweditor时会报错,求助!!
d.screenshot().convert("RGB").save(buffer,format='JPEG')AttributeError:'NoneType'objecthasnoattribute'screenshot'
HTTPConnectionPool(host='10.155.238.243',port=7912):Readtimedout.(readtimeout=10)链接超时,为啥捏
请问楼主ImportError:Nomodulenamedcv2是怎么回事啊?
小bug,多谢反馈,已经修复.pipinstall--pre-Uweditor重新试试
能够弹出网页了,但是依旧提示Localservernotstarted
多谢反馈,会渐渐完善的
多设备并行执行的时候不如appium稳定。经常出现服务断开的现象、
单个设备很稳定?
话说,我如果想用uiautomator2把本地硬盘里的APK装到手机上,应该怎么做呢?
请问下楼主,atx-agent经常返回502是怎么回事?
uiautomator这个Apk可能经常退出,不行就提个issue
我使用stf机器执行uia2init的时候会报一个错误,这是怎么回事儿呢?
网络错误,github被强了吧
我直接用源码调试就可以顺利执行,命令行就不行。
1、不能使用stf的设备远程连接使用weditor吗?
我的andriod连接成功后,显示手机屏幕的窗口很小,而且没法拖动窗口,请问这个是兼容性问题,还是配置问题?
RuntimeWarning:uiautomator2isdown,restart如何重启?
这个意思是自己正在重启中,不用管
换成chrome就没事了
请问,我安装好了。uiautomator2。再去执行python-muiautomator2init这条语句报以下错误是什么原因:raiseConnectionError(e,request=request)requests.exceptions.ConnectionError:HTTPSConnectionPool(host='github-production-release-asset-2e65be.s3.amazonaws.com',port=443):Maxretriesexceededwithurl:/53296967/aaffc180-23bf-11e8-8860-55319ef04337X-Amz-Algorithm=AWS4-HMAC-SHA256&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20180420%2Fus-east-1%2Fs3%2Faws4_request&X-Amz-Date=20180420T064358Z&X-Amz-Expires=300&X-Amz-Signature=302e0be75f8b2c40cc3da27d748ee8636659a1c532038d5e82925f3ac9e2a655&X-Amz-SignedHeaders=host&actor_id=0&response-content-disposition=attachment%3B%20filename%3Dapp-uiautomator.apk&response-content-type=application%2Fvnd.android.package-archive(CausedbyNewConnectionError('0003F1E5F8>:Failedtoestablishanewconnection:[Errno10060]',))
楼主,发现一个bug,win10系统,连接手机成功,但是界面不显示,不过可以进行点击操作,代码也显示
手机型号也说下
三星s8安卓版本8.0
vivo安卓版本4.4也不显示界面
界面430
连接不是是为什么,网络正常、安卓上也装了对应服务,楼主求解答
uiautomator2定位元素,怎么实现啊,d是java语言吧
后端是java的uiautomator2,这个是python做的封装
为啥有的控件找起来非常非常慢,用resourceId定位的,要等好几分钟才有返回,有时又找不到,都是同一个界面
判断子选择器存在不存在是不能用用exists么,如果不存在不会返回false,是报错了
使用USB连接
手机的序列号可以通过adbdevices获取到,假设序列号是123456f,连接代码为
importuiautomator2asu2d=u2.connect_usb('123456f')这段连接代码在什么地方写啊
在代码编辑器里面写:)
我有个疑问,就是我用python开发工具pcharm进行开发导入uiautomator总是无法导入,提示没有模块
请问,现在支持多台设备同时执行脚本吗?哪里有sample可以看?
我也碰到这个问题,很奇怪,不知道你的解决了么?
这个提示我就很迷茫,我不是用了python-mweditor吗
还有一点,我昨天也是,但是不知道怎么就好了..
有没有大佬知道什么原因啊
现在改成本地的了,就是这个网页,没错的
我在进行到就卡住了,提示如下error用的是安卓sdk的虚拟机,版本是4.4
问题不清楚,但是解决方法是有的,你可以使用adb判断当前是否是亮屏状态,然后再发送电源键给手机就好了
使用weditor可以连接,显示界面,点击响应。但是没有元素抓取,只有屏幕坐标,好痛苦,是那里不对呢?
系统信息PC:win1064位,anaconda+py3.5安装的uiautomator2(pipinstall--preuiautomator2)安装的weditor(pipinstall--preweditor)
手机:华为荣耀7,android6.0
升级
拜托大佬能不能说的详细点,升级什么?怎么升级?万分感谢
sudopython-muiautomator2init只后报错EnvironmentError:packagecom.github.uiautomatornotinstalled
请问一下大家这个问题是怎么回事。使用电脑连接安卓模拟器,adb的连接什么的都没问题,可是在执行了python-mweditor之后就一直这样。
之前手机安装还好好的,今天两台荣耀手机使用python-muiautomator2init--mirror全报502的错误了,uiautomator2是0.1.7的版本
请教一个问题,当id和classname都不唯一的时候,这个控件的位置需要如何定位呢?
xpath
请问支持IOS自动化测试吗
click按下没有抬起的事件,导致再click该按钮的时候无法点击
d.touch.up()
但是我发现我下载的uiautomator2运行xpath方法的时候提示不支持,有点不是很懂。并且我还有几个疑问麻烦楼主帮忙看下:1.如果实现原理是手机中封装了uiautomator2的HTTP服务,可以解析PC端发过来的HTTP请求(故需要PC和手机在一个网络下),那么如果是使用qpython的话,是在手机端自行触发的,这样就不需要PC并且也不需要这个网络环境了?
这个问题解决了吗?我的也是和你的一样啊OPPOA57
代码贴出来看看
1、使用python-mweditor启动了,报了个403错误。请问大佬这个是什么情况,ui2已经用的最新版本。并提示init成功。2、我是genymotion模拟器起的6.0版本
500GET/api/v1/devices/98d26007-e512-44de-aefa-fa71669c427a/screenshot,,这是什么原因
楼主帮忙看看这是啥情况,谢谢
并行跑自动化测试是通过什么实现的了
android模拟器是不是不能输入中文,有什么解决办法吗
楼主pipinstall--pre-Uuiautomator2命令安装atx成功了为什么运行Python脚本链接手机一直报这个错误:RuntimeWarning:backendatx-agentisnotalive,startagain...
楼主好,weditor连接android8.1.0手机,点击connect没有反应。操作系统是win10,浏览器是chrome,浏览器报错信息如下:
jQuery没加载,刷新下
谢谢,已经解决
楼主好,启动weditor后,连接设备时提示“Localservernotstarted,startwith$python-mweditor”,控制台输出如下图:
请问这种情况如何解决呢?
操作系统:MacOS10.14.5Python版本:Python3.7.2Android系统版本:7.1.1
请教下大家,同一条用例循环跑几百次时,经常出现这个错误
appium的?
codeskyblue我需要切webview的时候,device_ip已经是atx_agentx显示的ip地址了,端口是init启动的端口,同时我也尝试过指定adbtcpip5555,都是提示Message:unknownerror:Device10.1.25.195:5555isnotonline,请教一下怎么解决?
我启动weditor后没有报错,但是显示是空白的,我查了手机是已经连接上了,这个是怎么回事呢?大神求救
那个weditor启动了,你别退出呀
因为是空白的,所以我才又重启了几次,还是空白的
uiautomator2,有支持IOS的计划吗?
是挂代理了?还是网不好
是的
我也是报错这个,怎么解决的啊
换手机后resourceId发生了变化,怎样才能解决这个问题
connect成功,但是截屏显示空白,点击DumpHierarchy报错:cannotidentifyimagefile<_io.BytesIOobjectat0x0000000004ED00A0>
请问这个是什么原因
为什么connect的时候会出现这种错误
这个问题是怎么回事
还不支持python3.8,换成3.7就好了
想请教如果一个监听在一段脚本里不想要remove()掉了,在其他地方还是想再次启用的,还得把这个创建监听的过程在写一遍么
目前我通过多线程实例化多个client,并且让多个client同时执行操作。我发现在实现过程中,它们并行不能同时执行操作,只能使用多进程去处理的时候,才能多设备执行,但是由于其他原因,不能使用多进程去写,所以想来讨教一下,有没有什么方式让uiautomatot2可以多设备并发执行任务
我电脑启动的模拟器,weditor打开,也连接上了,但是我再weditor中点击app怎么一点反应都没
connect设备,会报错,怎么解决importhumanizeModuleNotFoundError:Nomodulenamed'humanize'
什么版本?
python3.7的
import这个库干嘛?
我跑脚本也经常出现抛RemoteDisconnected的异常,而且是随机性的出现;看了一些技术论坛的帖子,得出的结论貌似是python本身的bug,也一直没找到解决的方法。你最近有解决方案了吗?
请问一下楼主,报这个错误怎么解决呢?[ErrnoPIL.Image.openIOError]cannotidentifyimagefile<_io.BytesIOobjectat0x0000017B03479348>我有过尝试在手机上截图,也是无法截图的
PC和手机在同一个网段,并且PC能ping通手机,为什么connect连不上?![](/uploads/photo/2022/13240520-b388-
m,我也遇到这个问题了
大神,为什么有些控件识别的时候很慢,并且有时候能识别成功,有时候就识别不成功,最近因为这个搞的很头大
大佬,现在支持多点触控吗?比如三指滑动,我只找到两指手势的方法,没找到更多的
请问uiautomator2支援同一台电脑连多台andorid设备吗?目前我使用上时不时会遇到其中一台的设备会断线