界面检查与录制
在截图上指向一个元素,就能得到查找它的选择器和代码;你使用手机时,droidline inspect 替你写出脚本。可选功能,只在你的电脑上运行。
本页为译文。如与英文版不一致,以英文版为准。 English
droidline inspect 会在浏览器中打开一个页面,把手机截图和元素树并排显示。点击一个元素,它会给出查找该元素的方式,并附上 Python、Node.js 和 CLI 代码。打开录制,像平常一样使用手机,每次点击和输入的文字都会变成脚本中的一行。
这是可选功能。在你启动它之前什么都不会改变,它只在命令运行期间工作,页面只与你自己电脑上的 Droidline 服务器通信。
启动
服务器需要正在运行(droidline serve)。在另一个终端中运行:
droidline inspect
Inspector on http://127.0.0.1:8781
Open it in a browser. Stop with Ctrl+C.
用浏览器打开这个地址。如果有多部手机在线,先在顶部选择手机,然后点击读取界面。
要使用其他端口,传入 --listen 127.0.0.1:9000。地址请保持为 127.0.0.1:这个页面能查看和控制你的手机,而且没有密码。
找到选择器
在截图上点击一个元素,或在元素列表中点击一行。页面会给它加上边框并显示它的字段,然后显示查找方式:
- 只匹配这个元素的方式排在前面,标为只匹配这个元素。顺序与查找元素推荐的一致:
id、text、desc,然后是组合字段或利用元素所在行的查询。 - 会匹配多个元素的方式排在最后,并附上选中这个元素的
nth。
在列表上方选择命令(touch、long_touch、input 或 get_text)和语言标签,然后点击复制。试一下会在手机上运行这一行,等界面稳定后重新读取,让你看到结果。
录制脚本
打开录制标签,点击开始录制。标签上会出现一个红点。像平常一样使用手机:
- 点击变成
touch,长按变成long_touch,并附上最适合所点元素的选择器。 - 在输入框中打字会变成一行
input,内容是最终的文字。为了在这个输入框上弹出键盘而做的那次点击会被去掉,因为input会自己点击输入框。 - 在密码框中输入时,记录的是
<password>而不是你输入的内容。请自己填入真实的值,最好从环境变量读取。
脚本以开始录制时打开的应用的 launch 开头。完成后点击停止录制,选择语言,然后点击复制。
from droidline import connect
d = connect()
d.launch("com.android.settings")
d.touch({"clickable": True, "has": {"text": "网络和互联网"}})
d.touch("id", "search_action_bar")
d.input("id", "search_src_text", "wifi")
运行之前先读一遍:
- 返回和主屏幕不会被录制。 Android 不会把它们告诉应用。在你按下它们的位置加上
d.back()或d.home()。 - 滑动和滚动也不会被录制。 在点击列表中较靠下的元素之前加上
scroll_to。 - 在应用加载的地方加上等待。
wait_idle()或等待下一个界面元素的wait,可以避免脚本跑在手机前面。
录制在 30 分钟后自动停止,点击开始之前不会录制任何内容。Droidline 应用中的点击和键盘上的点击会被跳过。脚本用 input 设置的文字也不会被录制,只录制你亲手输入的内容。
在自己的工具中使用录制
这个页面使用 record 命令和 action 事件,你也可以直接使用。用 record(True) 打开录制,订阅 action 事件,每个事件都会带上点击或输入的内容以及那一刻的界面树。参见命令参考中的 record 和协议中的事件。