#1328·Airtest

Androd 11之后的get_render_resolution不正确

Author: hgjazhgjCreated Aug 2, 2026Updated Aug 2, 2026

描述问题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 或更高