Androd 11之后的get_render_resolution不正确
描述问题bug
airtest.core.android.android.Android.get_render_resolution 描述了一个应用在屏幕上的位置,排除了诸如刘海屏、分屏的其他应用等与用户所关注的应用无关的区域
该方法最终调用 airtets.core.android.adb.ADB.get_display_of_all_screen,通过 adb shell dumpsys window windows 的输出并正则匹配“Frames: containing=...”来判读具体应用的相关信息
在Android 10 以及之前的版本上,相关输出形如Frames: containing=[...] parent=[...] display=[...]
而在Android 11 以及更新的版本上,相关输出形如(一个上下分屏场景中下方应用的真实输出)Frames: parent=[0,1779][1116,2480] display=[0,1779][1116,2480] frame=[0,1779][1116,2480] last=[0,1779][1116,2480] insetsChanged=false
此时没有内容被正则匹配,get_display_of_all_screen返回整个屏幕的尺寸而非具体应用的尺寸
其中各个字段的含义见下方评论,你应该匹配出其中的frame作为render_resolution(事实上,在现有代码中,匹配containing也不正确,应该匹配display)
预期效果
请更新相关代码,添加对安卓11及更高版本的支持
或者至少在匹配失败时报错,而不是返回错误的数值
python 版本: python3.13
airtest 版本: 1.4.3
设备:
- 系统: Android 11 或更高
Source: AirtestProject/Airtest