Odcinek 21: Brendan Hansknecht, Mountain View, Kalifornia (maj 2021 r.)
Poprzednie odcinki
Dawniej automatyzowaliśmy interfejs ChromeOS w ramach kompleksowych testów (E2E) w całym na flocie urządzeń jest skomplikowana. W Tast wprowadziliśmy utworzona przy użyciu drzewa a11y (ułatwień dostępu) Chrome do sterowania interfejsem użytkownika ChromeOS. W umożliwia programistom łatwe tworzenie testów E2E na podstawie Interfejs (interfejs komputerowy ChromeOS, aplikacje natywne, aplikacje internetowe, interfejs przeglądarki Chrome).
W bibliotece można w prosty i łańcuchowy sposób opisać sposób wyszukiwania elementu interfejsu. Na przykład folder Pobrane w aplikacji Pliki może być zdefiniowany jako:
filesWindow := nodewith.NameStartingWith("Files")
.ClassName("RootView").Role(role.Window)
downloadsButton := nodewith.Name("Downloads")
.Role(role.TreeItem).Ancestor(filesWindow)
Po zdefiniowaniu wyszukiwarki węzłów możesz korzystać z funkcji na wiele sposobów. Od prostych kliknięć po czekanie na skupienie – interfejs daje stabilny dostęp do wielu operacji. Na przykład do prawej kliknij folder Pobrane, a potem lewym przyciskiem myszy kliknij przycisk kopiowania i wpisz:
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 */ }
Otoki znajdują się wokół wspólnych obszarów interfejsu (ustawienia, program uruchamiający, aplikacja Pliki itp.).
Używana powyżej funkcja uiauto.Run
wykonuje listę działań. W tym
kontekst, działanie to tylko func(context.Context) error
. Dzięki takiemu
API, z działaniami interfejsu użytkownika można mieszać inne rodzaje działań.
Na przykład używanie klawiatury jest tak proste, jak:
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 */ }
Szczegółowy przewodnik znajdziesz w Tast Codelab: Chrome UI Automation (w języku angielskim).
Przy tworzeniu tych testów bardzo przydatny jest zrzut drzewa usprawnienia Chrome do debugowania. Aby to zrobić, wystarczy dodać ten kod:
defer faillog.DumpUITreeOnError(ctx, s.OutDir(), s.HasError, tconn)
s.Fatal("I would like to see the ui tree here")
Drzewo a11y będzie teraz przechowywane razem z innymi logami Tast jako faillog/ui_tree.txt
Jeśli masz jakieś pytania, skontaktuj się z grupą użytkowników.