मंकीरनर

लेगसी monkeyrunner टूल, ऐसे प्रोग्राम लिखने के लिए एपीआई उपलब्ध कराता है जो Android डिवाइस या एम्युलेटर, जो Android कोड के बाहर का है.

monkeyrunner टूल को मुख्य तौर पर, ऐप्लिकेशन और डिवाइसों की जांच करने के लिए डिज़ाइन किया गया है पर मिल रहे हैं, लेकिन यूनिट टेस्ट सुइट को रन करने के लिए इस्तेमाल किया जा सकता है. दूसरे कामों के लिए. monkeyrunner की मदद से, Python प्रोग्राम लिखा जा सकता है जो किसी Android ऐप्लिकेशन या टेस्ट पैकेज को इंस्टॉल करता है, उसे चलाता है, उसे कीस्ट्रोक भेजता है, इसके यूज़र इंटरफ़ेस का स्क्रीनशॉट लेता है और वर्कस्टेशन पर स्क्रीनशॉट सेव करता है.

चेतावनी: monkeyrunner एपीआई का रखरखाव नहीं किया जा रहा है. हमारा सुझाव है कि आप ऐप्लिकेशन क्रॉलर टूल या यूज़र इंटरफ़ेस (यूआई) ऑटोमेशन टेस्टिंग फ़्रेमवर्क का इस्तेमाल न करें.

monkeyrunner टूल यूज़र इंटरफ़ेस (यूआई)/ऐप्लिकेशन एक्सरसीज़र मंकी, monkey टूल के नाम से भी जाना जाता है. monkey टूल adb शेल सीधे डिवाइस या एम्युलेटर का इस्तेमाल करता है और उपयोगकर्ता और सिस्टम इवेंट की एक रैंडम स्ट्रीम जनरेट करता है. इसके मुकाबले, यह monkeyrunner टूल, ख़ास कमांड और इवेंट को एपीआई से हटा दिया जाता है.

Android की जांच के लिए, monkeyrunner टूल ये सुविधाएं उपलब्ध कराता है:

  • एक से ज़्यादा डिवाइस कंट्रोल: monkeyrunner एपीआई, एक या एक से ज़्यादा डिवाइस कंट्रोल को लागू कर सकता है कई डिवाइसों या एम्युलेटर पर टेस्ट सुइट बना सकते हैं. सभी डिवाइसों को अपने हाथ से अटैच किया जा सकता है या सभी एम्युलेटर (या दोनों) को एक साथ चालू करें. इसके बाद, दोनों को एक-एक करके चालू करें प्रोग्राम बनाकर उसे टेस्ट करें. इसके बाद, एक या उससे ज़्यादा टेस्ट करें. एम्युलेटर को भी शुरू किया जा सकता है प्रोग्राम बनाकर, एक या उससे ज़्यादा टेस्ट करें. इसके बाद, एम्युलेटर को बंद कर दें.
  • फ़ंक्शनल टेस्टिंग: monkeyrunner अपने-आप शुरू से आखिर तक काम कर सकता है एक Android ऐप्लिकेशन का टेस्ट किया जा रहा है. आपको कीस्ट्रोक या टच इवेंट और व्यू के साथ इनपुट वैल्यू देनी होती हैं स्क्रीनशॉट के रूप में दिखाए.
  • रिग्रेशन टेस्टिंग: monkeyrunner साथ ही, अपने आउटपुट स्क्रीनशॉट की तुलना स्क्रीनशॉट के सेट से करना. इन स्क्रीनशॉट को सही है.
  • एक्सटेंसिबल ऑटोमेशन: monkeyrunner एक एपीआई टूलकिट है. इसलिए, आपके पास ये काम करने की सुविधा होती है Android को कंट्रोल करने के लिए, Python पर आधारित मॉड्यूल और प्रोग्राम का सिस्टम डेवलप करना डिवाइस. monkeyrunner API का इस्तेमाल करने के अलावा, स्टैंडर्ड एपीआई का इस्तेमाल करने के लिए Python os और subprocess मॉड्यूल का उपयोग करके Android टूल को कॉल किया जा सकता है, जैसे Android डीबग ब्रिज.

    monkeyrunner एपीआई में अपनी क्लास भी जोड़ी जा सकती हैं. यह है ज़्यादा जानकारी के लिए, प्लगिन की मदद से मंकीरनर को आगे बढ़ाएं सेक्शन.

monkeyrunner टूल का इस्तेमाल करता है Jython, Python का एक ऐसा तरीका है जो Java प्रोग्रामिंग भाषा का इस्तेमाल करता है. जैथॉन ने लेट्स monkeyrunner एपीआई, Android फ़्रेमवर्क के साथ आसानी से इंटरैक्ट करता है. Jython के साथ, कॉन्सटेंट, क्लास, और एपीआई के तरीकों को ऐक्सेस करने के लिए, Python सिंटैक्स का इस्तेमाल कर सकते हैं.

मंकी रनर गेम

यहां एक आसान monkeyrunner प्रोग्राम दिया गया है, जो किसी डिवाइस से कनेक्ट होता है और MonkeyDevice ऑब्जेक्ट है. MonkeyDevice ऑब्जेक्ट का इस्तेमाल करके, यह प्रोग्राम एक Android ऐप्लिकेशन इंस्टॉल करता है वह पैकेज बनाता है, उसकी किसी गतिविधि को चलाता है, और उस गतिविधि के लिए मुख्य इवेंट भेजता है. इसके बाद, प्रोग्राम नतीजे का स्क्रीनशॉट लेता है और MonkeyImage ऑब्जेक्ट. इस ऑब्जेक्ट से, प्रोग्राम एक PNG फ़ाइल लिखता है, जिसमें स्क्रीनशॉट होता है.

# 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 एपीआई, com.android.monkeyrunner पैकेज:

  • MonkeyRunner: monkeyrunner प्रोग्राम के लिए यूटिलिटी मेथड की क्लास. यह कक्षा एक का इस्तेमाल करके monkeyrunner को किसी डिवाइस या एम्युलेटर से कनेक्ट किया जा सकता है. यह आपको किसी monkeyrunner प्रोग्राम के लिए यूज़र इंटरफ़ेस (यूआई) बनाने और पहले से मौजूद सहायता.
  • MonkeyDevice: यह किसी डिवाइस या एम्युलेटर के बारे में है. यह कक्षा इंस्टॉल करने और पैकेज अनइंस्टॉल करना, कोई गतिविधि शुरू करना, और किसी है. इस क्लास का इस्तेमाल, टेस्ट पैकेज चलाने के लिए भी किया जाता है.
  • MonkeyImage: यह स्क्रीन कैप्चर इमेज दिखाता है. इस क्लास में स्क्रीन कैप्चर करने के तरीके, बिट मैप इमेज को अलग-अलग फ़ॉर्मैट में बदलते हुए, दो MonkeyImage ऑब्जेक्ट की तुलना करते हैं और फ़ाइल पर चित्र लिखने के लिए किया जा सकता है.

Python प्रोग्राम में, हर क्लास को Python मॉड्यूल के तौर पर ऐक्सेस किया जाता है. monkeyrunner टूल ये मॉड्यूल अपने-आप इंपोर्ट नहीं करता. मॉड्यूल इंपोर्ट करने के लिए, Python from स्टेटमेंट:

from com.android.monkeyrunner import <module>

जहां <module> वह क्लास का नाम है जिसे आपको इंपोर्ट करना है. ज़्यादा डेटा इंपोर्ट किया जा सकता है मॉड्यूल के नामों को अलग-अलग करके, एक ही from स्टेटमेंट में एक मॉड्यूल से ज़्यादा कॉमा.

मंकीरनर रन

monkeyrunner प्रोग्राम को किसी फ़ाइल से या टाइप करके चला सकते हैं monkeyrunner स्टेटमेंट एक इंटरैक्टिव सेशन. आप monkeyrunner निर्देश का इस्तेमाल करके, दोनों काम करते हैं, जो आपकी SDK डायरेक्ट्री की tools/ सबडायरेक्ट्री में मौजूद होती है. अगर आपने तर्क के तौर पर फ़ाइल का नाम दिया है, तो monkeyrunner निर्देश फ़ाइल के कॉन्टेंट को Python प्रोग्राम के तौर पर चलाता है; ऐसा न होने पर, एक इंटरैक्टिव सेशन शुरू हो जाता है.

monkeyrunner कमांड का सिंटैक्स यह है:

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

टेबल 1 में monkeyrunner फ़्लैग और आर्ग्युमेंट के बारे में बताया गया है.

टेबल 1. monkeyrunner फ़्लैग और आर्ग्युमेंट

आर्ग्यूमेंट ब्यौरा
-plugin <plugin_jar> (ज़रूरी नहीं) यह JAR फ़ाइल के बारे में बताता है, जिसमें monkeyrunner. monkeyrunner प्लगिन के बारे में ज़्यादा जानने के लिए, यहां जाएं प्लगिन की मदद से मंकीरनर को आगे बढ़ाएं सेक्शन. एक से ज़्यादा फ़ाइलों के लिए, तर्क को कई बार शामिल करें.
<program_filename> अगर यह तर्क दिया जाता है, तो monkeyrunner निर्देश, कॉन्टेंट को चलाता है फ़ाइल को Python प्रोग्राम के तौर पर फ़्लैग कर सकते हैं. अगर ऐसा नहीं होता है, तो निर्देश इंटरैक्टिव सेशन.
<program_options> (ज़रूरी नहीं) <program_file>. में प्रोग्राम के लिए फ़्लैग और आर्ग्युमेंट

मंकीरनर बिल्ट-इन सहायता

monkeyrunner के लिए एपीआई रेफ़रंस जनरेट किया जा सकता है. इसके लिए, यह तरीका अपनाएं:

monkeyrunner help.py <format> <outfile>

इसके तर्क हैं:

  • सादे टेक्स्ट के आउटपुट के लिए, <format> का मान text है या एचटीएमएल आउटपुट के लिए html.
  • <outfile>, आउटपुट फ़ाइल के लिए पाथ-क्वालिफ़ाइड नाम है.

प्लगिन की मदद से मंकीरनर को आगे बढ़ाएं

Java में लिखी गई क्लास के साथ, monkeyrunner एपीआई को बढ़ाया जा सकता है और एक या ज़्यादा JAR फ़ाइलों में बनाया जा सकता है. Google Analytics 4 प्रॉपर्टी को अपडेट करने के लिए, monkeyrunner API को अपनी क्लास के साथ या मौजूदा क्लास को बढ़ाने के लिए इस्तेमाल करें. आपने लोगों तक पहुंचाया मुफ़्त में इस सुविधा का इस्तेमाल, monkeyrunner एनवायरमेंट शुरू करने के लिए भी किया जा सकता है.

monkeyrunner को प्लग इन देने के लिए, monkeyrunner निर्देश शुरू करें इसमें -plugin <plugin_jar> तर्क के साथ बताया गया है टेबल 1.

आपके प्लगिन कोड में, मुख्य monkeyrunner क्लास को इंपोर्ट और बढ़ाया जा सकता है MonkeyDevice, MonkeyImage, और MonkeyRunner इंच com.android.monkeyrunner (monkeyrunner API के बारे में सेक्शन देखें).

ध्यान दें कि प्लगिन से आपको Android SDK का ऐक्सेस नहीं मिलता. पैकेज इंपोर्ट नहीं किए जा सकते जैसे कि com.android.app. ऐसा इसलिए है, क्योंकि monkeyrunner इसके साथ इंटरैक्ट करता है फ़्रेमवर्क एपीआई के लेवल से नीचे का डिवाइस या एम्युलेटर.

प्लगिन स्टार्टअप क्लास

प्लगिन के लिए JAR फ़ाइल, ऐसी क्लास के बारे में बता सकती है जिसे पहले इंस्टैंशिएट किया जाता है स्क्रिप्ट प्रोसेसिंग शुरू हो जाएगी. इस क्लास के बारे में बताने के लिए, कुंजी जोड़ें MonkeyRunnerStartupRunner को JAR फ़ाइल की मेनिफ़ेस्ट. वैल्यू के लिए, स्टार्टअप पर चलाने के लिए क्लास के नाम का इस्तेमाल करें. नीचे दिए गए स्निपेट में दिखाया गया है कि ant बिल्ड स्क्रिप्ट में ऐसा कैसे किया जा सकता है:

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

monkeyrunner टूल के रनटाइम एनवायरमेंट का ऐक्सेस पाने के लिए, स्टार्टअप क्लास लागू कर सकती है com.google.common.base.Predicate<PythonInterpreter>. उदाहरण के लिए, यह क्लास डिफ़ॉल्ट नेमस्पेस में कुछ वैरिएबल सेट अप करती है:

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