1 分•作者: tai2•3 个月前
您好,我创建了一个名为 `aco` 的命令行工具,旨在帮助快速启动 Appium 会话。 我是一名程序员,多年来一直从事端到端测试的移动应用自动化工作。Appium 是该领域的行业标准。它本质上是一个 WebDriver 协议服务器,专门用于 iOS/Android 等非浏览器应用。Appium 的优点在于其客户端/服务器架构能够清晰地分离职责。因此,用户在使用时可以选择自己喜欢的任何语言绑定。这意味着您通常需要同时关注服务器和客户端,而这正是痛点所在。 作为一名移动自动化工程师,我经常需要进行小型实验,以确保 AUT(被测应用)或 Appium 本身的行为:从复杂屏幕获取页面源代码需要多长时间,ScrollView 需要滚动多少才能达到特定的滑动量,当发送的文本丢失一些字符时屏幕后面发生了什么,等等。当需要进行这些实验时,我通常会编写一个小脚本来向服务器发送命令,启动一个 Appium 服务器,运行脚本,然后观察结果。这并不难,但有点麻烦,因为我需要回忆需要提供给服务器的参数,并进行配置才能看到实际的交互。 `aco` 使这一切变得非常简洁。您只需从命令行指定您的应用文件和平台。就是这样。核心思想是将服务器启动和会话初始化打包到一个命令中。另一点是 `aco` 被设计为有状态的。会话存储在磁盘上并被隐式拾取,因此您在使用时无需担心它。 ```bash $ aco session start --platform ios --app ./your_aut.app.zip --detach {"sessionId":"0134d269-eb58-4569-97d0-446c5e808fd4","serverUrl":"http://127.0.0.1:4723","platform":"ios","pid":21762} session detached -- pid 21740, stop with `aco session stop` $ aco elements #0 XCUIElementTypeApplication "Some label" selector: accessibility id:Some label rect: 0,0 402x874 ...... #58 XCUIElementTypeStaticText "Other label" selector: accessibility id:Other label rect: 172,630 57x19 $ aco tap --selector 'accessibility id:Other label' ok ``` 我试图将所有 Appium 功能(包括 iOS/Android 特定扩展)映射到命令行界面。此外,我还添加了一些实用功能,例如 `aco element`,它可以列出所有可访问的元素,并提供现成的选择器。我将非常感谢您的 bug 报告或反馈。谢谢!