是的,虽然不是很漂亮。
您可以使用以下命令获取视图层次结构:
adb exec-out uiautomator dump /dev/tty,它将输出作为XML文件输出到屏幕。不幸的是,由于添加了一些文本,因此它不是有效的XML。因此,让我们将其过滤掉:
adb exec-out uiautomator dump /dev/tty | awk '{gsub("UI hierchary dumped to: /dev/tty", "");print}'
现在我们有一个有效的XML。让我们通过XPath运行它:
adb exec-out uiautomator dump /dev/tty | awk '{gsub("UI hierchary dumped to: /dev/tty", "");print}' | xpath '//node[@resource-id="com.example:id/btnDone"] 2> /dev/null,它将搜索具有特定ID的所有节点。现在您有了节点,您可以在此做更多的事情。
如果仅获取视域,则必须执行以下操作:
adb exec-out uiautomator dump /dev/tty | awk '{gsub("UI hierchary dumped to: /dev/tty", "");print}' | xpath '//node[@resource-id="com.example:id/btnDone"]/@bounds' 2> /dev/null | awk '{$1=$1};1' | awk '{gsub("bounds=", "");print}' | awk '{gsub("\"", "");print}',此后将清理字符串并仅输出[294,1877][785,1981]。
特定节点的来源是: