• #19 楼 @chorushe 加个微信聊,这里不方便。william6902

    —— 来自 TesterHome 官方 安卓客户端

  • #17 楼 @williamliuok 一开始以为没评论成功,一不小心发了两条。

    —— 来自 TesterHome 官方 安卓客户端

  • 关于页面窗口的变化,可以分两种,一种是页面窗口发生了跳转,比如点开进入了另一个 activity,或是弹出了 popupwinow 对话框,这些都导致窗口焦点发生改变;还有一种属于页面内容的变化,比如点击了一个 tab 选项卡,导致 fragment 切换,但此时页面 window 还是之前 activity,只是 activity 页面上的内容或结构变化。对于这两种变化,在遍历的时候要能区分识别和对待才能使遍历顺利进行。
    关于第一种焦点变化的识别:
    可以通过 getRuntime 方法获取运行时,取得输入输出流向安卓输入 shell 命令,dumpsys window windows 可获取屏幕当前获取焦点窗口,(可以在 pc 机上先通过 cmd 进入命令行,输入 adb shell,再输入 dumpsys window windows | grep mCurrent 试一下,看一下输出结果。)输出的结果有当前聚焦窗口的对象地址名,所属应用名,以及 activity 名 (如果是弹出窗,就直接显示 popupwindow),通过该方法可标识当前窗口是否跳转到了新页面 (如果 activity 名称发生变化,则一定跳转,如果 activity 名称不变,地址发生变化,则肯定也是发生了跳转)。
    关于第二种变化,即:
    点击控件后,当前聚焦窗口地址和 activity 名都没变化,但页面内容发生了变化。此时就需要通过对比生成的 xml 控件数据文件来判定。一般可先将页面上的 text 先取出,对比前后顺序和内容有无改变,还有控件坐标位置取出,看控件是否移位,还有对比是否可用属性等等,这些操作可能耗时,有损遍历效率,需根据实际业务情况斟酌使用。总之,如果页面内容发生了变化,一定要重新更新窗口状态信息,以页面变化后的控件信息和位置为准。

    —— 来自 TesterHome 官方 安卓客户端

  • #9 楼 @chorushe 关于页面窗口的变化,可以分两种,一种是页面窗口发生了跳转,比如点开进入了另一个 activity,或是弹出了 popupwinow 对话框,这些都导致窗口焦点发生改变;还有一种属于页面内容的变化,比如点击了一个 tab 选项卡,导致 fragment 切换,但此时页面 window 还是之前 activity,只是 activity 页面上的内容或结构变化。对于这两种变化,在遍历的时候要能区分识别和对待才能使遍历顺利进行。
    关于第一种焦点变化的识别:
    可以通过 getRuntime 方法获取运行时,取得输入输出流向安卓输入 shell 命令,dumpsys window windows 可获取屏幕当前获取焦点窗口,(可以在 pc 机上先通过 cmd 进入命令行,输入 adb shell,再输入 dumpsys window windows | grep mCurrent 试一下,看一下输出结果。)输出的结果有当前聚焦窗口的对象地址名,所属应用名,以及 activity 名 (如果是弹出窗,就直接显示 popupwindow),通过该方法可标识当前窗口是否跳转到了新页面 (如果 activity 名称发生变化,则一定跳转,如果 activity 名称不变,地址发生变化,则肯定也是发生了跳转)。
    关于第二种变化,即:
    点击控件后,当前聚焦窗口地址和 activity 名都没变化,但页面内容发生了变化。此时就需要通过对比生成的 xml 控件数据文件来判定。一般可先将页面上的 text 先取出,对比前后顺序和内容有无改变,还有控件坐标位置取出,看控件是否移位,还有对比是否可用属性等等,这些操作可能耗时,有损遍历效率,需根据实际业务情况斟酌使用。总之,如果页面内容发生了变化,一定要重新更新窗口状态信息,以页面变化后的控件信息和位置为准。

    —— 来自 TesterHome 官方 安卓客户端