Starsze narzędzie monkeyrunner
udostępnia interfejs API służący do pisania programów, które kontrolują
z urządzenia z Androidem lub emulatora spoza kodu Androida.
Narzędzie monkeyrunner
jest przeznaczone przede wszystkim do testowania aplikacji i urządzeń
na poziomie funkcjonalnego/ramowego i do uruchamiania zestawów testów jednostkowych.
w innych celach. Dzięki monkeyrunner
możesz napisać program w Pythonie
instaluje aplikację lub pakiet testowy na Androida, uruchamia go i przesyła do niego naciśnięcia klawiszy
robi zrzuty ekranu interfejsu i zapisuje zrzuty ekranu na stacji roboczej.
Uwaga: interfejs API monkeyrunner
nie jest obsługiwany. Zalecamy użycie metody
Robota indeksującego aplikacji lub
Automator UI
środowiska testowego.
Narzędzie monkeyrunner
nie jest związane z
Małpa ćwicząca UI/aplikacja,
znanym także jako narzędzie monkey
. Narzędzie monkey
działa w
adb
bezpośrednio w
urządzenia lub emulatora i generuje pseudolosowe strumienie zdarzeń użytkownika i systemów. Dla porównania:
narzędzie monkeyrunner
steruje urządzeniami i emulatorami stacji roboczej.
polecenia i zdarzenia z interfejsu API.
Narzędzie monkeyrunner
udostępnia te funkcje do testowania w Androidzie:
-
Sterowanie wieloma urządzeniami: interfejs API
monkeyrunner
może stosować na różnych urządzeniach i emulatorach. Możesz fizycznie podłączyć wszystkie urządzenia lub uruchom wszystkie emulatory (albo oba) jednocześnie; połącz je po kolei automatycznie, a następnie uruchomić co najmniej 1 test. Możesz też uruchomić emulator, automatycznie przeprowadzić konfigurację, uruchomić co najmniej 1 test, a potem wyłączyć emulator. -
Testy funkcjonalne:
monkeyrunner
może przeprowadzać automatyczne testy funkcji, zaczynając od początku do końca. testu aplikacji na Androida. Wartości wejściowe podajesz za pomocą naciśnięć klawiszy lub zdarzeń dotknięcia i widoku wyniki w postaci zrzutów ekranu. -
Testowanie regresji:
monkeyrunner
może testować stabilność aplikacji, uruchamiając aplikacji i porównywać wyjściowe zrzuty ekranu z zestawem zrzutów ekranu, Zgadza się. -
Elastyczna automatyzacja:
monkeyrunner
to zestaw narzędzi interfejsu API, stworzyć system opartych na Pythonie modułów i programów do kontrolowania Androida. urządzenia. Oprócz interfejsu APImonkeyrunner
możesz używać standardowego interfejsu API Pythonos
orazsubprocess
modułów do wywoływania narzędzi Androida, takich jak Android Debug Bridge.Do interfejsu API
monkeyrunner
możesz też dodawać własne zajęcia. To jest omówiono to szczegółowo w Rozszerz aplikację monkeyrunner za pomocą wtyczek.
Narzędzie monkeyrunner
używa
Jython – implementacja języka Python w języku programowania Java. Jython pozwala
interfejs API monkeyrunner
jest łatwy w interakcji z platformą Androida. Dzięki Jython
może użyć składni Pythona, aby uzyskać dostęp do stałych, klas i metod interfejsu API.
Prosty program typu „monkeyrunner”
Oto prosty program monkeyrunner
, który łączy się z urządzeniem, tworząc
MonkeyDevice
obiektu. Za pomocą obiektu MonkeyDevice
program instaluje aplikację na Androida
pakietu, uruchamia jedno ze swoich działań i wysyła do niego kluczowe zdarzenia.
Program robi zrzut ekranu z wynikami, tworząc w ten sposób
MonkeyImage
obiekt.
Program zapisuje na podstawie tego obiektu plik PNG ze zrzutem ekranu.
# Imports the monkeyrunner modules used by this program. from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice # Connects to the current device, returning a MonkeyDevice object. device = MonkeyRunner.waitForConnection() # Installs the Android package. Notice that this method returns a boolean, so you can test # whether the installation worked. device.installPackage('myproject/bin/MyApplication.apk') # Sets a variable with the package's internal name. package = 'com.example.android.myapplication' # Sets a variable with the name of an Activity in the package. activity = 'com.example.android.myapplication.MainActivity' # Sets the name of the component to start. runComponent = package + '/' + activity # Runs the component. device.startActivity(component=runComponent) # Presses the Menu button. device.press('KEYCODE_MENU', MonkeyDevice.DOWN_AND_UP) # Takes a screenshot. result = device.takeSnapshot() # Writes the screenshot to a file. result.writeToFile('myproject/shot1.png','png')
Interfejs API Monkeyrunner
Interfejs API monkeyrunner
składa się z 3 modułów w interfejsie API
Pakiet com.android.monkeyrunner
:
-
MonkeyRunner
: Klasa metod narzędziowych dla programówmonkeyrunner
. Te zajęcia przedstawiają: Metoda łączeniamonkeyrunner
z urządzeniem lub emulatorem. Zapewnia też metod tworzenia UI dla programumonkeyrunner
oraz wyświetlania z wbudowaną pomocą. -
MonkeyDevice
: Reprezentuje urządzenie lub emulator. Ta klasa przedstawia metody instalowania odinstalowywanie pakietów, rozpoczynanie aktywności i wysyłanie zdarzeń dotyczących klawiatury lub dotknięcia do . Tej klasy możesz też używać do uruchamiania pakietów testowych. -
MonkeyImage
: Reprezentuje zrzut ekranu. Ta klasa przedstawia metody przechwytywania ekranów, konwertowanie obrazów bitmapowych do różnych formatów, porównywanie 2 obiektówMonkeyImage
oraz zapisując obraz do pliku.
W programie w języku Python dostęp do poszczególnych zajęć masz w postaci modułu Pythona. monkeyrunner
nie importuje tych modułów automatycznie. Aby zaimportować moduł, użyj polecenia
Instrukcja Python from
:
from com.android.monkeyrunner import <module>
Gdzie <module>
to nazwa zajęć, które chcesz zaimportować. Możesz zaimportować więcej
niż jeden moduł w tej samej instrukcji from
, rozdzielając nazwy modułów znakami
przecinków.
Biegacz małpich
Możesz uruchomić programy monkeyrunner
z pliku lub wpisując
Wyciągi monkeyrunner
w
aby rozpocząć sesję interaktywną. Jedno i drugie, wywołując polecenie monkeyrunner
,
który znajduje się w podkatalogu tools/
katalogu SDK.
Jeśli jako argument podasz nazwę pliku, polecenie monkeyrunner
uruchamia zawartość pliku jako program w Pythonie; W przeciwnym razie rozpoczyna się sesja interaktywna.
Oto składnia polecenia monkeyrunner
:
monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>
Tabela 1 zawiera omówienie flag i argumentów monkeyrunner
.
Argument | Opis |
---|---|
-plugin <plugin_jar>
|
(Opcjonalnie) Określa plik JAR zawierający wtyczkę dla
monkeyrunner
Więcej informacji o wtyczkach monkeyrunner znajdziesz tutaj
Rozszerz monkeyrunner za pomocą wtyczek.
Aby wskazać więcej niż 1 plik, uwzględnij ten argument kilka razy.
|
<program_filename>
|
Jeśli podasz ten argument, polecenie monkeyrunner uruchomi zawartość
i zapisać go jako program w Pythonie. W przeciwnym razie polecenie uruchamia
sesji interaktywnej.
|
<program_options>
|
(Opcjonalnie) Flagi i argumenty programu w: <program_file> |
wbudowana pomoc monkeyrunner
Odwołanie do interfejsu API dla monkeyrunner
możesz wygenerować, uruchamiając:
monkeyrunner help.py <format> <outfile>
Argumenty to:
-
W przypadku zwykłego tekstu
<format>
totext
lubhtml
jako dane wyjściowe HTML. -
<outfile>
to kwalifikowana nazwa pliku wyjściowego.
Rozbuduj aplikację Monkeyrunner za pomocą wtyczek
Interfejs monkeyrunner
API możesz rozszerzyć o klasy tworzone w języku Java.
i wbudować w co najmniej 1 plik JAR. Za pomocą tej funkcji możesz przedłużyć
interfejsu API monkeyrunner
do własnych zajęć lub rozszerzania istniejących zajęć. Ty
może też użyć tej funkcji do inicjowania środowiska monkeyrunner
.
Aby udostępnić wtyczkę do monkeyrunner
, wywołaj polecenie monkeyrunner
z argumentem -plugin <plugin_jar>
opisanym w
tabeli 1.
W kodzie wtyczki możesz importować i rozszerzać główne klasy monkeyrunner
MonkeyDevice
, MonkeyImage
i MonkeyRunner
in
com.android.monkeyrunner
(przeczytaj sekcję o interfejsie API monkeyrunner
).
Pamiętaj, że wtyczki nie dają dostępu do pakietu Android SDK. Nie możesz importować pakietów
na przykład com.android.app
. Dzieje się tak, ponieważ monkeyrunner
wchodzi w interakcję z:
urządzenia lub emulatora niższego poziomu niż interfejsy API platformy.
Klasa startowa wtyczki
Plik JAR wtyczki może określać klasę, której wystąpienie przed
rozpocznie się przetwarzanie skryptu. Aby określić tę klasę, dodaj klucz
MonkeyRunnerStartupRunner
do folderu
pliku manifestu. Jako wartość podaj nazwę klasy uruchamianą przy uruchamianiu. Poniżej
pokazuje, jak to zrobić w skrypcie kompilacji ant
:
<jar jarfile="myplugin" basedir="${build.dir}"> <manifest> <attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/> </manifest> </jar>
Aby uzyskać dostęp do środowiska wykonawczego narzędzia monkeyrunner
, klasa startowa może zaimplementować
com.google.common.base.Predicate<PythonInterpreter>
Na przykład to
klasa konfiguruje zmienne w domyślnej przestrzeni nazw:
Kotlin
package com.android.example import com.google.common.base.Predicate import org.python.util.PythonInterpreter class Main: Predicate<PythonInterpreter> { override fun apply(anInterpreter: PythonInterpreter): Boolean { /* * Examples of creating and initializing variables in the monkeyrunner environment's * namespace. During execution, the monkeyrunner program can refer to the variables * "newtest" and "use_emulator" * */ anInterpreter.set("newtest", "enabled") anInterpreter.set("use_emulator", 1) return true } }
Java
package com.android.example; import com.google.common.base.Predicate; import org.python.util.PythonInterpreter; public class Main implements Predicate<PythonInterpreter> { @Override public boolean apply(PythonInterpreter anInterpreter) { /* * Examples of creating and initializing variables in the monkeyrunner environment's * namespace. During execution, the monkeyrunner program can refer to the variables "newtest" * and "use_emulator" * */ anInterpreter.set("newtest", "enabled"); anInterpreter.set("use_emulator", 1); return true; } }