第 21 集:作者:Brendan Hansknecht,地点:加州山景城(2021 年 5 月)
上一集
过去,在整个测试周期内,在端到端 (E2E) 测试中自动执行 ChromeOS 界面 所有设备都是困难的。在 Tast 中, 创建,使用 Chrome a11y(无障碍)树控制 ChromeOS 界面。 库让开发者可以针对任何可见的 界面界面(ChromeOS 桌面界面、原生应用、Web 应用、Chrome 浏览器界面)。
该库通过一种简单的可链接方式来描述如何查找界面元素。 例如,“文件”应用中的 Downloads 文件夹可以定义为:
filesWindow := nodewith.NameStartingWith("Files")
.ClassName("RootView").Role(role.Window)
downloadsButton := nodewith.Name("Downloads")
.Role(role.TreeItem).Ancestor(filesWindow)
定义节点查找器后,就可以 节点。从简单的点击到等待焦点, 库支持许多操作。例如,从右侧 点击 Downloads 文件夹,然后左键点击“Copy”按钮,就可以写出:
ui := uiauto.New(tconn)
if err := uiauto.Combine("copy downloads",
ui.RightClick(downloadsButton),
ui.LeftClick(nodewith.Name("Copy").Role(role.MenuItem)),
)(ctx); err != nil { /* do error handling */ }
常见界面区域(设置、 启动器、文件应用等)。
上面使用的 uiauto.Run
函数接受一个操作列表。在本课中,
上下文,操作就是一个 func(context.Context) error
。使用这种
简单的 API 中,其他类型的操作可以与界面操作混合在一起。
例如,使用键盘就像以下操作一样简单:
if err := uiauto.Combine("do some random stuff",
ui.FocusAndWait( /* some text field */ ),
kb.TypeAction("Hello, world!"),
kb.AccelAction("Enter"),
func(ctx context.Context) error {
// My custom action!
},
)(ctx); err != nil { /* do error handling */ }
如需更深入的指南,请参阅 Tast Codelab:Chrome 界面自动化。
在编写这些测试时,转储 Chrome a11y 树非常有用 进行调试只需添加以下代码即可:
defer faillog.DumpUITreeOnError(ctx, s.OutDir(), s.HasError, tconn)
s.Fatal("I would like to see the ui tree here")
a11y 树现在将与其他试吃日志一起存储为 faillog/ui_tree.txt
如果您有任何疑问,请与 tast-users 群组联系。