Skip to content

Androd 11之后的get_render_resolution不正确 #1328

Description

@hgjazhgj

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

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions