首先是看了这篇文章浅谈自动化测试工具 发现文章写的结构很合理,理解起来也很容易。本着学习的心态,模仿其结构再写一篇
python-uiautomator2 是一个自动化测试开源工具,仅支持 Android 平台的原生应用测试。
python-uiautomator2 封装了谷歌自带的 uiautomator2 测试框架,提供便利的 python 接口。他允许测试人员直接在 PC 上编写 Python 的测试代码,操作手机应用,完成自动化,大大提高了自动化代码编写的效率。
以下图片使用 Windows 画图软件
如图所示,python-uiautomator2 主要分为两个部分,python 客户端,移动设备
整个过程
atx-agent
(守护进程), 随后atx-agent
启动 uiautomator2 服务 (默认 7912 端口) 进行监听如命令行可以执行adb devices
,则跳过此步骤
从谷歌官网下载 Android Platform Tools https://developer.android.com/studio/releases/platform-tools.html,解压,并加包含adb.exe
的目录加入到系统的 PATH 中。
pip install --pre -U uiautomator2
首先设备连接到 PC,并能够adb devices
发现该设备。
# 从github下载atx-agent文件,并推送到手机。在手机上安装包名为`com.github.uiautomator`的apk
$ python -m uiautomator2 init
success
最后提示 success,代表 atx-agent 初始化成功。
python-uiautomator2 连接手机的方式有两种,一种是通过 WIFI,另外一种是通过 USB。两种方法各有优缺点。
WIFI 最便利的地方要数可以不用连接数据线,USB 则可以用在 PC 和手机网络不在一个网段用不了的情况。
使用 WIFI 连接
手机获取到手机的 IP,并确保电脑可以 PING 通手机。手机的 IP 可以在设置-WIFI 设置里面获取到。
比如手机的 IP 是192.168.0.100
,连接设备的代码为
import uiautomator2 as u2
d = u2.connect('192.168.0.100')
使用 USB 连接
手机的序列号可以通过adb devices
获取到,假设序列号是123456f
,连接代码为
import uiautomator2 as u2
d = u2.connect_usb('123456f')
虽然很想用 Android SDK 内置工具uiautomatorviewer.bat
,但是运行 uiautomator2 的时候,uiautomatorviewer.bat
运行不起来,两者之间冲突太严重。
于是参考着uiautomatorviewer
的界面,我又写了一个weditor
,调用 python-uiautomator2 的两个接口screenshot
和dump_hierarchy
这样就不会有冲突问题了
注:weditor 依然处于开发期,功能可能会跟文中描述的有所不同
安装方法: pip install --pre weditor
使用方法:
首先运行python -m weditor
,之后浏览器会自动打开一个网页 http://atx.open.netease.com
(注:这个网址仅提供一个前端,而python -mweditor
这个命令则本地开放了 HTTP 的接口,前端去跟本地的服务去通信)
下图为网页的截图
重点说下这个部分
先忽略iOS
和Neco
这两个,直接选择 Android。输入框中可以写设备的 IP 或者设备的 Serial(序列号),跟上面提到的配置手机设备参数用法一致。之后点击 Connect,如果一切正常就会出现一个绿色的叶子。
页面刷新时,点击蓝色的 Reload 按钮重新刷新。
定位方式
d(resourceId="com.smartisanos.clock:id/text_stopwatch").click()
d(text="秒表").click()
d(description="..").click()
d(className="android.widget.TextView").click()
xpath 定位并不支持,一开始打算做支持的,但是发现不用也能搞定。就是代码写的长一点而已。
# click
d(text="Settings").click()
# long click
d(text="Settings").long_click()
# 等待元素的出现
d(text="Settings").wait(timeout=10.0)
九宫格解锁:以前文章写过 https://testerhome.com/topics/11034
中文字符的输入
如果可以定位到元素,直接通过 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
https://github.com/openatx/uiautomator2
_^
火钳 占楼
威武
不支持 xpath 的话 有的 app 是不是不好找控件呢?就楼主说的这 4 个元素,还是不能满足需求的样子
支持移动端 webview 吗
webview 用 selenium 就好了
还有太多太多的操作,我就不写了。看Github上的文档吧,绝对比我现在写的要好和全
这个我不是十分赞同。
github 上就没介绍 weditor……
不错,之前看着 uiautomator2 仅支持 java,我的头就大了。因为写着 Java 效率太低。
执行 python -m weditor 时会报错,求助!!
C:\Users\Administrator>python -m weditor
listen port 17310
[I 180205 11:22:46 web:2087] 304 GET /api/v1/version (::1) 1.00ms
SN -
[E 180205 11:22:56 web:1614] Uncaught exception GET /api/v1/devices/-/screenshot
(::1)
HTTPServerRequest(protocol='http', host='localhost:17310', method='GET', uri
='/api/v1/devices/-/screenshot', version='HTTP/1.1', remote_ip='::1')
Traceback (most recent call last):
File "C:\Python27\lib\site-packages\tornado\web.py", line 1534, in execut
e
result = method(*self.path_args, **self.path_kwargs)
File "C:\Python27\lib\site-packages\weditor__main_.py", line 134, in get
d.screenshot().convert("RGB").save(buffer, format='JPEG')
AttributeError: 'NoneType' object has no attribute 'screenshot'
HTTPConnectionPool(host='10.155.238.243', port=7912): Read timed out. (read timeout=10)
链接超时,为啥捏
请问楼主 ImportError: No module named cv2 是怎么回事啊?
小 bug,多谢反馈,已经修复 . pip install --pre -U weditor
重新试试
之前有同事无意卸载了手机里面的 uiautomator.apk,最后查看了你的代码实现才发现必须要通过 python -m uiautomator2 init 重新安装才行。
这块还是注明一下吧。
另外,你报错还是要友好点,希望能把这些问题比如 http 端口没有正常映射以及发送 http 请求时候的错误做一些简单的封装。
总体来说,很好的 weditor
多设备并行执行的时候不如 appium 稳定。经常出现服务断开的现象、
请问支持 android 7.1.1 系统的设备吗,例如 vivo X20,我总是连接失败
Traceback (most recent call last):
File "C:\Python\Python35\lib\site-packages\weditor_main.py", line 297, in post
ret = eval(code, {'d': d})
File "", line 1, in
File "C:\Python\Python35\lib\site-packages\uiautomator2__init.py", line 1218, in inner
return fn(self, *args, **kwargs)
File "C:\Python\Python35\lib\site-packages\uiautomator2__init.py", line 1261, in click
self.session.click(x, y)
File "C:\Python\Python35\lib\site-packages\uiautomator2__init.py", line 996, in click
ret = self.jsonrpc.click(x, y)
File "C:\Python\Python35\lib\site-packages\uiautomator2__init.py", line 322, in __call_
return self.server.jsonrpc_retry_call(jsonrpc_url, self.method, params, http_timeout)
File "C:\Python\Python35\lib\site-packages\uiautomator2_init.py", line 329, in jsonrpc_retry_call
return self.jsonrpc_call(*args, **kwargs)
File "C:\Python\Python35\lib\site-packages\uiautomator2__init_.py", line 373, in jsonrpc_call
raise err
uiautomator2.JsonRpcError: -32001 Server error: java.lang.SecurityException
[Finished in 1.259s]
话说,我如果想用 uiautomator2 把本地硬盘里的 APK 装到手机上,应该怎么做呢?
请问下楼主,atx-agent 经常返回 502 是怎么回事?
我使用 stf 机器执行 uia2 init 的时候会报一个错误,这是怎么回事儿呢?
我直接用源码调试就可以顺利执行,命令行就不行。
1、不能使用 stf 的设备远程连接使用 weditor 吗?
[W 180411 17:48:06 web:2063] 430 GET /api/v1/devices/1739cdba-b03c-4ee5-8966-423a0ad3944d/screenshot (::1) 24.20ms
SN 1739cdba-b03c-4ee5-8966-423a0ad3944d
Traceback (most recent call last):
File "/usr/local/lib/python2.7/site-packages/weditor/__main__.py", line 134, in get
d.screenshot().convert("RGB").save(buffer, format='JPEG')
File "/usr/local/lib/python2.7/site-packages/uiautomator2/__init__.py", line 748, in screenshot
r = requests.get(self.server.screenshot_uri)
File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 502, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/sessions.py", line 612, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python2.7/site-packages/requests/adapters.py", line 490, in send
raise ConnectionError(err, request=request)
ConnectionError: ('Connection aborted.', BadStatusLine("''",))
我的 andriod 连接成功后,显示手机屏幕的窗口很小,而且没法拖动窗口,请问这个是兼容
性问题,还是配置问题?
RuntimeWarning: uiautomator2 is down, restart
如何重启?
请问,我安装好了。uiautomator2。再去执行 python -m uiautomator2 init 这条语句报以下错误是什么原因:
raise ConnectionError(e, request=request)
requests.exceptions.ConnectionError: HTTPSConnectionPool(host='github-production
-release-asset-2e65be.s3.amazonaws.com', port=443): Max retries exceeded with ur
l: /53296967/aaffc180-23bf-11e8-8860-55319ef04337?X-Amz-Algorithm=AWS4-HMAC-SHA2
56&X-Amz-Credential=AKIAIWNJYAX4CSVEH53A%2F20180420%2Fus-east-1%2Fs3%2Faws4_requ
est&X-Amz-Date=20180420T064358Z&X-Amz-Expires=300&X-Amz-Signature=302e0be75f8b2c
40cc3da27d748ee8636659a1c532038d5e82925f3ac9e2a655&X-Amz-SignedHeaders=host&acto
r_id=0&response-content-disposition=attachment%3B%20filename%3Dapp-uiautomator.a
pk&response-content-type=application%2Fvnd.android.package-archive (Caused by Ne
wConnectionError('
0003F1E5F8>: Failed to establish a new connection: [Errno 10060] ',))
楼主,发现一个 bug,win10 系统,连接手机成功,但是界面不显示,不过可以进行点击操作,代码也显示
本人弄了一台 PC A,连接手机,然后再从另外一台 PC B 通过 SSH 登录到 PC A 上,然后运行” python -m uiautomator2 init”,就会提示连接超时,log 如下。但是我如果直接在 PC A 上运行就可以正常的初始化成功。麻烦楼主帮忙看看问题
[root@e2e ~]# python -m uiautomator2 init
2018-05-22 17:55:30,921 - main.py:269 - INFO - Detect pluged devices: [u'c3718c7c']
2018-05-22 17:55:30,921 - main.py:286 - INFO - Device(c3718c7c) initialing ...
2018-05-22 17:55:31,214 - main.py:113 - INFO - install minicap
2018-05-22 17:55:31,385 - main.py:120 - INFO - install minitouch
2018-05-22 17:55:31,626 - main.py:137 - INFO - apk(1.0.12) already installed, skip
2018-05-22 17:55:31,679 - main.py:175 - INFO - atx-agent(0.2.1) already installed, skip
2018-05-22 17:55:31,842 - main.py:212 - INFO - launch atx-agent daemon
Traceback (most recent call last):
File "/usr/lib64/python2.7/runpy.py", line 162, in run_module_as_main
"main", fname, loader, pkg_name)
File "/usr/lib64/python2.7/runpy.py", line 72, in _run_code
exec code in run_globals
File "/usr/lib/python2.7/site-packages/uiautomator2/main.py", line 348, in
main()
File "/usr/lib/python2.7/site-packages/uiautomator2/main.py", line 344, in main
fire.Fire(MyFire)
File "/usr/lib/python2.7/site-packages/fire/core.py", line 127, in Fire
component_trace = _Fire(component, args, context, name)
File "/usr/lib/python2.7/site-packages/fire/core.py", line 366, in _Fire
component, remaining_args)
File "/usr/lib/python2.7/site-packages/fire/core.py", line 542, in _CallCallable
result = fn(*varargs, **kwargs)
File "/usr/lib/python2.7/site-packages/uiautomator2/main.py", line 273, in init
ignore_apk_check)
File "/usr/lib/python2.7/site-packages/uiautomator2/main.py", line 295, in _init_with_serial
ins.launch_and_check()
File "/usr/lib/python2.7/site-packages/uiautomator2/main_.py", line 225, in launch_and_check
'http://localhost:%d/version' % lport, timeout=3)
File "/usr/lib/python2.7/site-packages/requests/api.py", line 72, in get
return request('get', url, params=params, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/api.py", line 58, in request
return session.request(method=method, url=url, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 508, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python2.7/site-packages/requests/sessions.py", line 618, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python2.7/site-packages/requests/adapters.py", line 521, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPConnectionPool(host='localhost', port=52630): Read timed out. (read timeout=3)
@codeskyblue 每次连接都不行,是网络超时导致的还是连接的问题?
连接不是是为什么,网络正常、安卓上也装了对应服务,楼主求解答
python-uiautomator2,请问下楼主,python 语言写脚本的花,用 uiautomator2 捕捉到元素后,怎么用 python 语言现实啊,d(className="android.view.View", instance=44) 这个是 java 语言现实的吧
为啥有的控件找起来非常非常慢,用 resourceId 定位的,要等好几分钟才有返回,有时又找不到,都是同一个界面
判断子选择器存在不存在是不能用用 exists 么,
如果不存在不会返回 false,是报错了
使用 USB 连接
手机的序列号可以通过 adb devices 获取到,假设序列号是 123456f,连接代码为
import uiautomator2 as u2
d = u2.connect_usb('123456f') 这段连接代码 在什么地方写啊
我有个疑问,就是我用 python 开发工具 p cha r m 进行开发导入 uiautomator 总是无法导入,提示没有模块
这个提示我就很迷茫, 我不是用了 python -m weditor 吗
还有一点, 我昨天也是, 但是不知道怎么就好了..
我输入 python -m weditor 后并没有自动打开一个网页 http://atx.open.netease.com,出现了如下图:
有没有大佬知道什么原因啊
我在进行到
就卡住了,提示如下 error
用的是安卓 sdk 的虚拟机,版本是 4.4
发现使用 Android 9 手机调试,解锁状态下无法运行测试脚本,总是在初始化的时候报错。
运行到 u = u2.connect_usb(‘HM8LDA8LRCDA8SEA’),或者 u.healthcheck() 这句就会卡住。reset_uiautomator() 时提示 "Uiautomator started failed. Find solutions in https://github.com/openatx/uiautomator2/wiki/Common-issues",在该网页没能找到解决的方法。
但手动熄屏之后运行脚本,可以跑起来。所以每次都是跑起来再给机器解锁,使用 Android8.1 不会有这种现象。
请问有大佬知道怎么解决吗?
使用 weditor 可以连接,显示界面,点击响应。 但是没有元素抓取, 只有屏幕坐标, 好痛苦, 是那里不对呢?
系统信息
PC: win10 64 位, anaconda+py3.5
安装的 uiautomator2 (pip install --pre uiautomator2)
安装的 weditor (pip install --pre weditor)
手机:华为 荣耀 7, android 6.0
现在都是重启手机后直接运行 weditor, 就这样。 用 uiautomatorviewer 可以获得元素内容!
也重新执行过 python -m uiautomator2 init 这句, 问题依旧。
pip install -U --pre uiautomator2
python -m uiautomator2 init
sudo python -m uiautomator2 init 只后报错 EnvironmentError: package com.github.uiautomator not installed
请问一下大家 这个问题是怎么回事。使用电脑连接安卓模拟器,adb 的连接什么的都没问题,可是在执行了 python -m weditor 之后就一直这样。
之前手机安装还好好的,今天两台荣耀手机使用 python -m uiautomator2 init --mirror 全报 502 的错误了,uiautomator2 是 0.1.7 的版本
请教一个问题,当 id 和 classname 都不唯一的时候,这个控件的位置需要如何定位呢?
@Whsnd win10 系统,连接手机成功,但是界面不显示,不过可以进行点击操作,代码也显示。。。这个问题解决了吗
请问支持 IOS 自动化测试吗
click 按下没有抬起的事件,导致再 click 该按钮的时候无法点击
但是我发现我下载的 uiautomator2 运行 xpath 方法的时候提示不支持,有点不是很懂。并且我还有几个疑问麻烦楼主帮忙看下:
1.如果实现原理是手机中封装了 uiautomator2 的 HTTP 服务,可以解析 PC 端发过来的 HTTP 请求(故需要 PC 和手机在一个网络下),那么如果是使用 qpython 的话,是在手机端自行触发的,这样就不需要 PC 并且也不需要这个网络环境了?
1、使用 python -m weditor 启动了,报了个 403 错误。请问大佬这个是什么情况,ui2 已经用的最新版本。并提示 init 成功。
2、我是 genymotion 模拟器起的 6.0 版本
500 GET /api/v1/devices/98d26007-e512-44de-aefa-fa71669c427a/screenshot,,这是什么原因
楼主帮忙看看这是啥情况,谢谢
并行跑自动化测试是通过什么实现的了?
android 模拟器是不是不能输入中文,有什么解决办法吗
楼主好,在 python -m uiautormator2 init 时报错,我找到了 uiautormator2 main.py 里报错的代码,但不知道该如何解决,网上也没找到相关的解决方案,请问楼主有遇到过类似问题吗?最后如何解决?
楼主 pip install --pre -U uiautomator2 命令 安装 atx 成功了
为什么运行 Python 脚本链接手机一直报这个错误:RuntimeWarning: backend atx-agent is not alive, start again ...
楼主好,weditor 连接 android8.1.0 手机,点击 connect 没有反应。操作系统是 win10,浏览器是 chrome,浏览器报错信息如下:
@codeskyblue 楼主好,注册了 watcher 来监听页面的弹窗,发现有的时候响应很快,有的时候响应很慢,偶尔还会没有响应,这是什么原因呢,是和解析页面元素速度有关系么?
使用 dump_hierarchy() 函数有的 text 得不到值是什么原因?谢谢楼主大大解答,比如 QQ 空间里的说说 都载入不了
楼主好,启动 weditor 后,连接设备时提示 “ Local server not started, start with $ python -m weditor ”,控制台输出如下图:
请问这种情况如何解决呢?
操作系统:MacOS 10.14.5
Python 版本:Python 3.7.2
Android 系统版本:7.1.1
请教下大家,同一条用例循环跑几百次时,经常出现这个错误
codeskyblue 我需要切 webview 的时候,device_ip 已经是 atx_agentx 显示的 ip 地址了,端口是 init 启动的端口,同时我也尝试过指定 adb tcpip 5555,都是提示 Message: unknown error: Device 10.1.25.195:5555 is not online,请教一下怎么解决?
我启动 weditor 后没有报错,但是显示是空白的,我查了手机是已经连接上了,这个是怎么回事呢?
大神求救
uiautomator2,有支持 IOS 的计划吗?
换手机后 resourceId 发生了变化,怎样才能解决这个问题
connect 成功,但是截屏显示空白,点击 Dump Hierarchy 报错:cannot identify image file <_io.BytesIO object at 0x0000000004ED00A0>
请问这个是什么原因
为什么 connect 的时候会出现这种错误
listen port 17310
Traceback (most recent call last):
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 192, in run_module_as_main
return _run_code(code, main_globals, None,
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\runpy.py", line 85, in _run_code
exec(code, run_globals)
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\weditor__main.py", line 474, in
main()
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\weditor__main.py", line 470, in main
run_web(args.debug, args.port)
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\weditor__main_.py", line 414, in run_web
application.listen(port)
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\tornado\web.py", line 2042, in listen
server.listen(port, address)
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\tornado\tcpserver.py", line 144, in listen
self.add_sockets(sockets)
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\tornado\tcpserver.py", line 157, in add_sockets
self._handlers[sock.fileno()] = add_accept_handler(
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\tornado\netutil.py", line 268, in add_accept_handler
io_loop.add_handler(sock, accept_handler, IOLoop.READ)
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\site-packages\tornado\platform\asyncio.py", line 79, in add_handler
self.asyncio_loop.add_reader(
File "C:\Users\zzh1019\AppData\Local\Programs\Python\Python38\lib\asyncio\events.py", line 501, in add_reader
raise NotImplementedError
NotImplementedError
这个问题是怎么回事
想请教如果一个监听在一段脚本里不想要 remove() 掉了,在其他地方还是想再次启用的,还得把这个创建监听的过程在写一遍么
目前我通过多线程实例化多个 client,并且让多个 client 同时执行操作。我发现在实现过程中,它们并行不能同时执行操作,只能使用多进程去处理的时候,才能多设备执行,
但是由于其他原因,不能使用多进程去写,所以想来讨教一下,有没有什么方式让 uiautomatot2 可以多设备并发执行任务
def Plan_start2(self):
clients = []
for phoneinfo in self.selected_phones:
try:
client = u2.connect(phoneinfo[1])
clients.append((client, phoneinfo))
except:
logging.info('设备:%s 连接状态异常' % phoneinfo[0])
self.abnormal_state(phoneinfo)
return
self.starttime = datetime.datetime.now()
logging.info('运行开始时间:%s' % self.starttime.strftime('%H:%M:%S'))
for client, phoneinfo in clients: #针对每个手机创建一个线程
p = np.Process(target=self.phone_plan, args=(client, phoneinfo,))
p.run()
~ $ python3 -m weditor
listening on http://172.31.126.53:17310
[I 200410 21:38:57 web:2162] 304 GET / (::1) 11.53ms
[I 200410 21:38:57 web:2162] 304 GET /api/v1/version (::1) 0.71ms
[W 200410 21:39:00 connectionpool:662] Retrying (Retry(total=2, connect=3, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /version
[W 200410 21:39:01 connectionpool:662] Retrying (Retry(total=1, connect=3, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /version
[W 200410 21:39:03 connectionpool:662] Retrying (Retry(total=0, connect=3, read=None, redirect=None, status=None)) after connection broken by 'ProtocolError('Connection aborted.', RemoteDisconnected('Remote end closed connection without response'))': /version
[I 200410 21:39:03 init:129] uiautomator2 version: 2.4.3.dev8
连接 weditor 无法 connect 设备。有人遇到过这样的问题吗?一直无法解决...
我电脑启动的模拟器,weditor 打开,也连接上了,但是我再 weditor 中点击 app 怎么一点反应都没
connect 设备,会报错,怎么解决
import humanize
ModuleNotFoundError: No module named 'humanize'
import 这个库干嘛?
我跑脚本也经常出现抛 RemoteDisconnected 的异常,而且是随机性的出现;看了一些技术论坛的帖子,得出的结论貌似是 python 本身的 bug,也一直没找到解决的方法。你最近有解决方案了吗?
请问一下楼主,报这个错误怎么解决呢?[Errno PIL.Image.open IOError] cannot identify image file <_io.BytesIO object at 0x0000017B03479348>
我有过尝试在手机上截图,也是无法截图的
想咨询一下 就是用 WEditor 定位应用的时候 像那种点击一下屏幕才出来的一些按钮怎么定位到? 我点击没用
我在 win 10 上也出现了这个问题,之前在 mac 端并未遇到过,@codeskyblue 请问该怎么解决呢?
PC 和手机在同一个网段,并且 PC 能 ping 通手机,为什么 connect 连不上?![](/uploads/photo/2022/13240520-b388-
大神,为什么有些控件识别的时候很慢,并且有时候能识别成功,有时候就识别不成功,最近因为这个搞的很头大
大佬,现在支持多点触控吗?比如三指滑动,我只找到两指手势的方法,没找到更多的
请问 uiautomator2 支援同一台电脑连多台 andorid 设备吗?
目前我使用上时不时会遇到其中一台的设备会断线