monkeyrunner

Eski monkeyrunner aracı, API'yi kullanarak bir öğeyi denetleyen Android kodu dışındaki bir Android cihaz veya emülatör.

monkeyrunner aracı özellikle uygulamaları ve cihazları test etmek için tasarlanmıştır fonksiyonel/çerçeve seviyesinde ve birim test paketlerini çalıştırmak için başka amaçlar için kullanıyor. monkeyrunner ile Python programı yazabilirsiniz Android uygulaması veya test paketi yükleyen, çalıştıran, tuş vuruşu gönderen ve kullanıcı arayüzünün ekran görüntülerini alır ve ekran görüntülerini iş istasyonunda saklar.

Dikkat: monkeyrunner API'si yönetilmiyor. Şunu kullanmanızı öneririz: Uygulama Tarayıcısı aracı veya Kullanıcı Arayüzü Otomatikleştirici test çerçevesi oluşturabilirsiniz.

monkeyrunner aracı, Kullanıcı Arayüzü/Uygulama Alıştırması Yapan Maymun, monkey aracı olarak da bilinir. monkey aracı, adb kabuğu doğrudan kullanıcı ve sistem etkinliklerinin sözde rastgele akışları oluşturur. Buna kıyasla, monkeyrunner aracı bir iş istasyonundaki cihazları ve emülatörleri kontrol ederek API'den belirli komutlar ve etkinlikler.

monkeyrunner aracı, Android testleri için şu özellikleri sağlar:

  • Birden fazla cihaz kontrolü: monkeyrunner API bir veya daha fazla cihaz uygulayabilir birden fazla cihaz veya emülatörde test paketi oluşturabilirsiniz. Tüm cihazları fiziksel olarak bağlayabilirsiniz. veya tüm emülatörleri (ya da ikisini birden) aynı anda başlatıp sırasıyla her birine bağlayın yapabilir ve ardından bir veya daha fazla test çalıştırabilirsiniz. Bir emülatör de başlatabilirsiniz yapılandırma, bir veya daha fazla test çalıştırma ve ardından emülatörü kapatma.
  • İşlevsel test: monkeyrunner, otomatik bir başlangıç - bitiş testi yapabilir test kullanıcısı yaptık. Tuş vuruşlarıyla veya dokunma etkinlikleriyle ve görünümle giriş değerleri sağlarsınız bunları ekran görüntüsü olarak kaydeder.
  • Regresyon testi: monkeyrunner, ve çıkış ekran görüntülerini, kullandığı çok modlu akım ekran görüntüsüyle doğru.
  • Genişletilebilir otomasyon: monkeyrunner bir API araç seti olduğundan şunları yapabilirsiniz: Android cihazları yönetmek için Python tabanlı modül ve programlar içeren bir sistem geliştirme cihazlar. monkeyrunner API'nin kendisini kullanmanın yanı sıra, Python os ve subprocess çağrılarını Android araçlarına çağırmak için Android Debug Bridge.

    Ayrıca monkeyrunner API'ye kendi sınıflarınızı da ekleyebilirsiniz. Bu daha ayrıntılı olarak Monkeyrunner'ı eklentilerle genişletin bölümü.

monkeyrunner aracı, Jython, Java programlama dilini kullanan bir Python uygulamasıdır. Jython monkeyrunner API, Android çerçevesiyle kolayca etkileşime girer. Jython ile API'nin sabit değerlerine, sınıflarına ve yöntemlerine erişmek için Python söz dizimini kullanabilir.

Basit bir maymun avcısı programı

Burada, bir cihaza bağlanarak yeni bir monkeyrunner oluşturmak için MonkeyDevice nesnesini tanımlayın. Program, MonkeyDevice nesnesini kullanarak bir Android uygulaması yükler bir etkinliği çalıştırır ve önemli etkinlikleri etkinliğe gönderir. Program daha sonra sonucun ekran görüntüsünü alır ve MonkeyImage nesne algılandı. Program, bu nesneden ekran görüntüsünü içeren bir PNG dosyası yazar.

# 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')

monkeyrunner API'si

monkeyrunner API, com.android.monkeyrunner paketi:

  • MonkeyRunner: monkeyrunner programları için bir yardımcı program yöntemleri sınıfı. Bu sınıf bir monkeyrunner öğesini bir cihaza veya emülatöre bağlama yöntemi. Ayrıca monkeyrunner programı için kullanıcı arayüzleri oluşturma ve yerleşik yardım.
  • MonkeyDevice: Bir cihazı veya emülatörü temsil eder. Bu sınıfta, yükleme ve paketleri kaldırma, bir Etkinlik başlatma ve klavye veya dokunma etkinliklerini uygulamasını indirin. Bu sınıfı test paketlerini çalıştırmak için de kullanırsınız.
  • MonkeyImage: Ekran görüntüsü sağlar. Bu sınıf, ekranları yakalamaya yönelik yöntemler sağlar, bit eşlem resimlerini çeşitli biçimlere dönüştürerek iki MonkeyImage nesnesini karşılaştırır ve bir resim dosyası oluşturmuşsunuzdur.

Python programlarında her sınıfa Python modülü olarak erişirsiniz. monkeyrunner aracı bu modülleri otomatik olarak içe aktarmaz. Bir modülü içe aktarmak için Python from ifadesi:

from com.android.monkeyrunner import <module>

Burada <module>, içe aktarmak istediğiniz sınıf adıdır. Daha fazla öğeyi içe aktarabilirsiniz birden fazla modülün adlarını birbirinden ayırarak aynı from virgül kullanarak yapabilirsiniz.

Monkeyrunner'ı çalıştır

monkeyrunner programlarını bir dosyadan veya monkeyrunner ekstre ele alacağız. Her ikisini de monkeyrunner komutunu çağırarak yaparsınız. Bu URL, SDK dizininizin tools/ alt dizininde bulunur. Bağımsız değişken olarak bir dosya adı sağlarsanız monkeyrunner komutu dosyanın içeriğini bir Python programı olarak çalıştırır; Aksi takdirde etkileşimli bir oturum başlatır.

Aşağıda monkeyrunner komutunun söz dizimi verilmiştir:

monkeyrunner -plugin <plugin_jar> <program_filename> <program_options>

Tablo 1'de monkeyrunner işaretleri ve bağımsız değişkenleri açıklanmaktadır.

Tablo 1. monkeyrunner işaret ve bağımsız değişken

Bağımsız değişken Açıklama
-plugin <plugin_jar> (İsteğe bağlı) Şu dosya için eklenti içeren bir JAR dosyasını belirtir: monkeyrunner monkeyrunner eklentileri hakkında daha fazla bilgi edinmek için Monkeyrunner'ı eklentilerle genişletin bölümünü. Birden fazla dosya belirtmek için bağımsız değişkeni birden çok kez ekleyin.
<program_filename> Bu bağımsız değişkeni sağlarsanız monkeyrunner komutu içeriği çalıştırır dosyayı Python programı olarak kullanabilirsiniz. Aksi takdirde, komut inceleyeceğiz.
<program_options> (İsteğe bağlı) <program_file>. içindeki programın işaretleri ve bağımsız değişkenleri

monkeyrunner yerleşik yardım

Aşağıdaki komutu çalıştırarak monkeyrunner için API referansı oluşturabilirsiniz:

monkeyrunner help.py <format> <outfile>

Bağımsız değişkenler şunlardır:

  • <format>, düz metin çıkışı için text değerine sahiptir veya HTML çıkışı için html.
  • <outfile>, çıkış dosyası için yol nitelikli bir addır.

Monkeyrunner'ı eklentilerle genişletme

monkeyrunner API'yi, Java'da yazdığınız sınıflarla genişletebilirsiniz bir veya daha fazla JAR dosyası halinde oluşturabilirsiniz. Bu özelliği kullanarak kendi sınıflarınızla veya mevcut sınıfların kapsamını genişletmek için monkeyrunner API'yi kullanabilirsiniz. Siz bu özelliği monkeyrunner ortamını başlatmak için de kullanabilir.

monkeyrunner işlevine eklenti sağlamak için monkeyrunner komutunu çağırın şu sayfada açıklanan -plugin <plugin_jar> bağımsız değişkeniyle: tablo 1.

Eklenti kodunuzda ana monkeyrunner sınıflarını içe aktarabilir ve genişletebilirsiniz MonkeyDevice, MonkeyImage ve MonkeyRunner com.android.monkeyrunner (monkeyrunner API ile ilgili bölüme bakın).

Eklentilerin Android SDK'ya erişmenize olanak sağlamadığını unutmayın. Paketleri içe aktaramazsınız com.android.app gibi. Bunun nedeni, monkeyrunner ürününün çerçeve API'leri seviyesinin altında olması gerekir.

Eklenti başlangıç sınıfı

Bir eklentinin JAR dosyası, ilk olarak örneklenen bir sınıfı belirtebilir. komut dosyası işleme başlar. Bu sınıfı belirtmek için anahtarı ekleyin JAR dosyasına MonkeyRunnerStartupRunner manifest'ini kullanabilirsiniz. Değer için başlangıçta çalıştırılacak sınıfın adını kullanın. Aşağıdakiler snippet, bunun bir ant derleme komut dosyasında nasıl yapılacağını gösterir:

<jar jarfile="myplugin" basedir="${build.dir}">
<manifest>
<attribute name="MonkeyRunnerStartupRunner" value="com.myapp.myplugin"/>
</manifest>
</jar>

Başlangıç sınıfı, monkeyrunner aracının çalışma zamanı ortamına erişmek için com.google.common.base.Predicate<PythonInterpreter>. Örneğin, sınıfı, varsayılan ad alanında bazı değişkenleri ayarlar:

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;
    }
}