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
monkeyrunnermoż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:
monkeyrunnermoż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:
monkeyrunnermoże testować stabilność aplikacji, uruchamiając aplikacji i porównywać wyjściowe zrzuty ekranu z zestawem zrzutów ekranu, Zgadza się. -
Elastyczna automatyzacja:
monkeyrunnerto zestaw narzędzi interfejsu API, stworzyć system opartych na Pythonie modułów i programów do kontrolowania Androida. urządzenia. Oprócz interfejsu APImonkeyrunnermożesz używać standardowego interfejsu API Pythonosorazsubprocessmodułów do wywoływania narzędzi Androida, takich jak Android Debug Bridge.Do interfejsu API
monkeyrunnermoż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 łączeniamonkeyrunnerz urządzeniem lub emulatorem. Zapewnia też metod tworzenia UI dla programumonkeyrunneroraz 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ówMonkeyImageoraz 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.
Tabela 1. Flagi i argumenty: 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>totextlubhtmljako 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;
}
}