Catch up on everything announced at Firebase Summit, and learn how Firebase can help you accelerate app development and run your app with confidence. Learn More

रोबो स्क्रिप्ट संदर्भ गाइड

संग्रह की मदद से व्यवस्थित रहें अपनी प्राथमिकताओं के आधार पर, कॉन्टेंट को सेव करें और कैटगरी में बांटें.

यह दस्तावेज़ संरचना, क्षमताओं, उपयोग, रिकॉर्डिंग और कार्यों सहित रोबो स्क्रिप्ट के बारे में संदर्भ जानकारी प्रदान करता है। रोबो स्क्रिप्ट ऐसे परीक्षण हैं जो मोबाइल ऐप के लिए मैन्युअल गुणवत्ता आश्वासन (क्यूए) कार्यों को स्वचालित करते हैं, और निरंतर एकीकरण (सीआई) और पूर्व-लॉन्च परीक्षण रणनीतियों को सक्षम करते हैं। रोबो स्क्रिप्ट एक JSON फ़ाइल है जो उपयोगकर्ता इंटरफ़ेस (UI) और अन्य क्रियाओं के अनुक्रम का वर्णन करती है।

आप निम्नलिखित तरीकों से रोबो स्क्रिप्ट बना सकते हैं:

  • रोबो स्क्रिप्ट रिकॉर्डिंग सुविधा का उपयोग करें।
  • रोबो स्क्रिप्ट को मैन्युअल रूप से बनाएं।
  • रोबो स्क्रिप्ट रिकॉर्ड करें और फिर इसे मैन्युअल रूप से संपादित करें।

रोबो स्क्रिप्ट का उपयोग करने के बारे में अधिक जानने के लिए, रोबो स्क्रिप्ट चलाएँ देखें।

ऐप-अंडर-टेस्ट एंड्रॉइड एप्लिकेशन पैकेज (एपीके) जैसे अन्य इनपुट के साथ रोबो टेस्ट को रोबो स्क्रिप्ट प्रदान की जाती है।

निम्नलिखित रोबो स्क्रिप्ट का एक उदाहरण है जो किसी उपयोगकर्ता को ऐप में साइन करता है:

[
  {
    "eventType": "VIEW_TEXT_CHANGED",
    "replacementText": "user123",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/username"
      }
    ]
  },
  {
    "eventType": "VIEW_TEXT_CHANGED",
    "replacementText": "12345",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/password"
      }
    ]
  },
  {
    "eventType": "VIEW_CLICKED",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/login"
      }
    ]
  }
]

संरचना

रोबो स्क्रिप्ट में प्रत्येक क्रिया को एक या अधिक विशेषता-मूल्य जोड़े के बंडल के रूप में दर्शाया जाता है, जिसे निम्न तालिका में वर्णित किया गया है:

विशेषता विवरण
eventType क्रिया के प्रकार को निर्दिष्ट करता है, उदाहरण के लिए, क्लिक, टेक्स्ट संपादन, आदि। प्रत्येक क्रिया के लिए आवश्यक है।
elementDescriptors वर्णनकर्ता जो UI विजेट की पहचान करते हैं। लक्ष्य UI विजेट वाली सभी कार्रवाइयों के लिए आवश्यक, जैसे किसी विशेष बटन पर क्लिक करना।
optional यदि true पर सेट किया जाता है, तो यह क्रिया तब छोड़ दी जाती है जब इसे निष्पादित नहीं किया जा सकता है। उदाहरण के लिए, यह क्रिया तब छोड़ दी जाती है जब यह स्क्रीन पर अपना लक्ष्य UI विजेट नहीं ढूंढ पाती है- जिसमें रोबो स्क्रिप्ट शामिल नहीं है। डिफ़ॉल्ट रूप से, मान false है।
replacementText लक्ष्य UI विजेट में इनपुट करने के लिए पाठ। पाठ संपादन क्रियाओं के लिए आवश्यक है।
swipeDirection स्वाइप की दिशा निर्दिष्ट करता है। स्वाइप क्रियाओं के लिए आवश्यक।
delayTime निर्दिष्ट करता है कि कितनी देर प्रतीक्षा करनी है, मिलीसेकंड में। प्रतीक्षा कार्यों के लिए आवश्यक है।
pointTapXCoordinate और pointTapYCoordinate पिक्सेल X और Y टैप किए गए बिंदु के निर्देशांक हैं। pointTapXPercent और pointTapYPercent के साथ परस्पर अनन्य। पॉइंट टैप कार्रवाइयों के लिए ज़रूरी है.
pointTapXPercent और pointTapYPercent टैप किए गए बिंदु का प्रतिशत X और Y निर्देशांक। pointTapXCoordinate और pointTapYCoordinate के साथ परस्पर अनन्य। पॉइंट टैप कार्रवाइयों के लिए ज़रूरी है.

लक्ष्य UI विजेट के बिना दो क्रियाओं के साथ रोबो स्क्रिप्ट का एक उदाहरण निम्नलिखित है, जिसका अर्थ है कि ये क्रियाएं किसी विशिष्ट UI विजेट पर संचालित नहीं होती हैं:

[
  {
    "eventType": "DELAYED_MESSAGE_POSTED",
    "delayTime": 3000
  },
  {
    "eventType": "PRESSED_BACK"
  }
]

तत्व वर्णनकर्ता

एलिमेंट डिस्क्रिप्टर निम्नलिखित में से एक या अधिक पहचान विशेषताओं का उपयोग करके UI विजेट की पहचान करता है:

विशेषता विवरण
className -
ancestorClassName तत्व के UI पदानुक्रम पूर्वज का वर्ग नाम। एक पूर्वज तत्व के UI पदानुक्रम में कोई भी मूल नोड है, जिसमें तत्व भी शामिल है।
resourceId -
resourceIdRegex resourceId आईडी से मेल खाने के लिए जावा नियमित अभिव्यक्ति।
contentDescription -
contentDescriptionRegex सामग्री विवरण से मेल contentDescription के लिए जावा नियमित अभिव्यक्ति।
text (जो स्क्रीन पर दिखाई देता है) -
textRegex text से मेल खाने के लिए जावा नियमित अभिव्यक्ति।
groupViewChildPosition , recyclerViewChildPosition , या adapterViewChildPosition अपने मूल विजेट के प्रकार के आधार पर UI विजेट की चाइल्ड स्थिति का प्रतिनिधित्व करता है।

अक्सर, ये विशेषताएँ अपरिभाषित होती हैं, उदाहरण के लिए, एक बटन में टेक्स्ट और सामग्री विवरण नहीं हो सकता है। भले ही कुछ विशेषता मान मौजूद हों, हो सकता है कि वे किसी दी गई ऐप स्क्रीन ( resourceId सहित) पर अद्वितीय न हों।

उदाहरण के लिए, किसी सूची के आइटम के बीच अंतर करना आमतौर पर केवल उनके माता-पिता विजेट के भीतर उनके अलग-अलग चाइल्ड पोजीशन का उपयोग करके संभव है। इसका मतलब है कि यूआई विजेट की पहचान करने के लिए केवल एक तत्व डिस्क्रिप्टर का उपयोग करना आमतौर पर अपर्याप्त होता है। इसलिए, एक क्रिया के तत्व elementDescriptors विशेषता में तत्व वर्णनकर्ताओं का एक क्रम होता है जिसे इस तरह से क्रमबद्ध किया जाता है कि पहला लक्ष्य UI विजेट से मेल खाता है, दूसरा लक्ष्य UI विजेट के मूल विजेट से मेल खाता है, और इसी तरह। किसी क्रिया के लक्ष्य UI विजेट का मिलान तब किया जाता है जब उसके सभी तत्व वर्णनकर्ता संबंधित UI विजेट उप-पदानुक्रम से मेल खाते हैं।

टेक्स्ट परिवर्तन और क्लिक क्रियाओं के साथ रोबो स्क्रिप्ट का एक उदाहरण निम्नलिखित है, दोनों के लिए आपको दिए गए एलिमेंट डिस्क्रिप्टर का उपयोग करके लक्ष्य UI विजेट की पहचान करने की आवश्यकता है:

[
  {
    "eventType": "VIEW_TEXT_CHANGED",
    "replacementText": "John",
    "elementDescriptors": [
      {
        "className": "android.support.v7.widget.AppCompatEditText",
        "groupViewChildPosition": 0,
        "resourceId": "com.google.samples.apps.topeka:id/first_name"
      },
      {
        "className": "android.widget.FrameLayout",
        "groupViewChildPosition": 0
      },
      {
        "className": "android.support.design.widget.TextInputLayout",
        "groupViewChildPosition": 1
      }
    ]
  },
  {
    "eventType": "VIEW_CLICKED",
    "elementDescriptors": [
      {
        "className": "android.support.design.widget.FloatingActionButton",
        "groupViewChildPosition": 1,
        "resourceId": "com.google.samples.apps.topeka:id/done"
      },
      {
        "className": "android.widget.FrameLayout",
        "groupViewChildPosition": 1,
        "resourceId": "com.google.samples.apps.topeka:id/content"
      },
      {
        "className": "android.widget.FrameLayout",
        "groupViewChildPosition": 0,
        "resourceId": "com.google.samples.apps.topeka:id/sign_in_content"
      }
    ]
  }
]

निष्पादन विकल्प

आप वैकल्पिक रूप से एक रोबो स्क्रिप्ट में क्रियाओं की सूची को एक JSON ऑब्जेक्ट के साथ उपसर्ग कर सकते हैं जो उस रोबो स्क्रिप्ट के निष्पादन विकल्पों को निर्दिष्ट करता है। यह कॉन्फ़िगरेशन हेडर वांछित निष्पादन विकल्पों के JSON प्रतिनिधित्व के बाद roboscript कीवर्ड से शुरू होता है।

रोबो स्क्रिप्ट निम्नलिखित निष्पादन विकल्पों का समर्थन करती हैं:

  • executionMode - रोबो स्क्रिप्ट चलने पर निष्पादन विकल्प लागू होते हैं:
    • strict - यदि true पर सेट किया जाता है, तो रोबो स्क्रिप्ट आंशिक मिलान, वर्तमान क्रिया को छोड़कर, और निलंबन को नियोजित नहीं करती है। यही है, रोबो स्क्रिप्ट को नियमित इंस्ट्रूमेंटेशन टेस्ट के रूप में निष्पादित किया जाता है और जैसे ही इसकी कोई भी क्रिया नहीं की जा सकती है, वैसे ही विफल हो जाती है।
  • postscript - रोबो स्क्रिप्ट के पूरा होने के बाद लागू किए गए निष्पादन विकल्प:
    • terminate करें - यदि true पर सेट किया जाता है, तो रोबो स्क्रिप्ट पूरी होने के बाद रोबो परीक्षण क्रॉल करना बंद कर देता है।

निम्नलिखित strict मोड में निष्पादित रोबो स्क्रिप्ट का एक उदाहरण है जो तीन सेकंड के लिए सोती है, जिसके बाद क्रॉल बंद हो जाता है:

"roboscript": {
  "executionMode": {
    "strict": true
  },
  "postscript": {
    "terminate": true
  }
}
[
  {
    "eventType": "DELAYED_MESSAGE_POSTED",
    "delayTime": 3000
  }
]

टेम्पलेट पैरामीटर

टेम्प्लेट पैरामीटर रोबो स्क्रिप्ट में एक प्लेसहोल्डर होता है जिसे वास्तविक मान से बदल दिया जाता है जब रोबो परीक्षण उस रोबो स्क्रिप्ट को निष्पादन के लिए लोड करता है। टेम्प्लेट पैरामीटर एक डबल अंडरस्कोर के साथ प्रीफ़िक्स्ड होते हैं, उसके बाद एक प्रतिशत चिह्न, और एक डबल अंडरस्कोर के बाद एक प्रतिशत चिह्न के साथ पोस्टफ़िक्स किया जाता है।

रोबो स्क्रिप्ट निम्नलिखित टेम्पलेट पैरामीटर का समर्थन करती है:

  • __%APP_PACKAGE_NAME%__ - परीक्षण के तहत ऐप का पैकेज नाम।

निम्नलिखित रोबो स्क्रिप्ट का एक उदाहरण है जो ऐप-अंडर-टेस्ट प्रक्रिया को रोकता है:

[
  {
    "eventType": "ADB_SHELL_COMMAND",
    "command": "am force-stop __%APP_PACKAGE_NAME%__"
  }
]

टिप्पणियाँ

एक रोबो स्क्रिप्ट में टिप्पणी पंक्तियाँ हो सकती हैं, जो कि # या // से शुरू होने वाली पंक्तियाँ हैं।

कुछ टिप्पणियों के साथ रोबो स्क्रिप्ट का एक उदाहरण निम्नलिखित है:

# Confirm a user account.
[
  {
    // Click the DONE button.
    "eventType": "VIEW_CLICKED",
    "elementDescriptors": [
      {
        "resourceId": "com.google.samples.apps.topeka:id/done"
      }
    ]
  }
]

क्षमताओं

डिफ़ॉल्ट रूप से, जब तक रोबो स्क्रिप्ट की सभी क्रियाएं पूरी नहीं हो जाती (या कम से कम प्रयास की गई), रोबो स्क्रिप्ट सक्रिय रहती है। रोबो परीक्षण जब भी प्रदर्शन करने के लिए कोई क्रिया चुन रहा होता है तो रोबो स्क्रिप्ट क्रिया से मिलान करने का प्रयास करता रहता है। रोबो स्क्रिप्ट मजबूती बढ़ाने के लिए निम्नलिखित तकनीकों का उपयोग करती है:

तकनीक विवरण
आंशिक मिलान यदि वर्तमान रोबो स्क्रिप्ट क्रिया का पूरी तरह से मिलान नहीं किया जा सकता है, तो मिलान मानदंड में ढील दी जाती है और मिलान का पुन: प्रयास किया जाता है। रोबो स्क्रिप्ट क्रिया के लक्ष्य UI विजेट से मिलान करते समय आंशिक मिलान सबसे बाहरी तत्व डिस्क्रिप्टर पर विचार नहीं करता है।

यदि आंशिक मिलान सफल होता है, तो संबंधित रोबो स्क्रिप्ट क्रिया हमेशा की तरह की जाती है। यह तकनीक उन परिदृश्यों का समर्थन करती है जिनमें ऐप संरचना बदलती है, उदाहरण के लिए, ऐप संस्करणों के बीच, जब स्क्रीन तत्वों को पुनर्व्यवस्थित किया जाता है।

वर्तमान कार्रवाई छोड़ें यदि वर्तमान रोबो स्क्रिप्ट क्रिया का पूर्ण या आंशिक रूप से मिलान नहीं किया जा सकता है, तो रोबो बाद की रोबो स्क्रिप्ट क्रिया से मिलान करने का प्रयास करता है। यदि बाद की कार्रवाई पूरी तरह या आंशिक रूप से मेल खाती है, तो रोबो परीक्षण वर्तमान रोबो स्क्रिप्ट क्रिया को छोड़ देता है (और कभी वापस नहीं आता) और बाद की क्रिया को निष्पादित करता है।

यह तकनीक उन परिदृश्यों का समर्थन करती है जब ऐप का व्यवहार संस्करणों के बीच बदलता है या परतदार होता है, उदाहरण के लिए, जब रोबो स्क्रिप्ट की रिकॉर्डिंग बनाम रीप्लेइंग के दौरान अलग-अलग स्क्रीन पर एक रुक-रुक कर संवाद दिखाई दे सकता है।

निलंबित करें यदि न तो वर्तमान और न ही बाद की रोबो स्क्रिप्ट क्रियाओं का पूरी तरह या आंशिक रूप से मिलान किया जा सकता है, तो रोबो स्क्रिप्ट अस्थायी रूप से निलंबित कर दी जाती है और रोबो परीक्षण अपनी अन्य रणनीतियों का उपयोग करके प्रदर्शन करने के लिए एक क्रिया चुनता है। इस क्रिया के पूरा होने के बाद, रोबो परीक्षण रोबो स्क्रिप्ट को निष्पादित करना फिर से शुरू करता है।

जब तक वर्तमान या बाद की रोबो स्क्रिप्ट क्रियाओं का मिलान नहीं किया जा सकता, तब तक रोबो स्क्रिप्ट कितनी भी क्रियाओं के लिए निलंबित रहती है। इस प्रकार, रोबो स्क्रिप्ट को रोबो परीक्षण के लिए एक प्रस्तावना होने की आवश्यकता नहीं है, और आप मानक रोबो परीक्षण क्रियाओं के साथ रोबो स्क्रिप्ट क्रियाओं को प्रतिच्छेद कर सकते हैं। यह तकनीक उन परिदृश्यों का समर्थन करती है जब ऐप व्यवहार अस्थिर होता है, या जब ऐप संस्करणों के बीच परिवर्तन इतने बड़े होते हैं कि रोबो परीक्षण को अपने मानक कार्यों के साथ "अंतराल को भरने" की आवश्यकता होती है।

रीसाइक्लर व्यू और एडेप्टर व्यू सपोर्ट

RecyclerView और एडेप्टर व्यू विजेट के बच्चे गतिशील रूप से लोड होते हैं और वर्तमान स्क्रीन से कई स्वाइप दूर प्रदर्शित हो सकते हैं। चूंकि स्क्रीन का आकार, और इस बच्चे को प्राप्त करने के लिए आवश्यक स्वाइप की संख्या अलग-अलग डिवाइस फॉर्म कारकों के लिए अलग है, इसलिए बच्चे की डेटा स्थिति पर भरोसा करना अधिक मजबूत है, जो पूर्ण है। इस बच्चे को स्क्रीन पर लाने और फिर उसकी स्क्रीन स्थिति का उपयोग करने के लिए आवश्यक स्वाइप की संख्या पर भरोसा करने के लिए यह एक कम मजबूत दृष्टिकोण है।

इसलिए, रोबो स्क्रिप्ट RecyclerView बच्चों की पूर्ण डेटा स्थिति को कैप्चर करती है जो कि रोबो स्क्रिप्ट क्रियाओं के लक्ष्य हैं जैसे कि recyclerViewChildPosition । रोबो स्क्रिप्ट एडॉप्टर व्यू बच्चों की संपूर्ण डेटा स्थिति को भी कैप्चर करती है जो एडॉप्टर व्यू चाइल्ड पोजीशन के रूप में adapterViewChildPosition स्क्रिप्ट क्रियाओं के लक्ष्य हैं।

RecyclerView और एडेप्टर व्यू बच्चों पर क्रियाएँ निम्न चरणों में की जाती हैं:

  1. रोबो परीक्षण सुनिश्चित करता है कि संबंधित बच्चे को स्क्रीन पर रिसाइक्लर व्यू या एडेप्टर व्यू युक्त पोजिशनिंग एक्शन के माध्यम से प्रदर्शित किया जाता है।

  2. रोबो टेस्ट सीधे चाइल्ड एलीमेंट पर रिकॉर्ड की गई कार्रवाई करता है, क्योंकि यह पहले से ही स्क्रीन पर प्रदर्शित होता है।

एडेप्टर व्यू ( android.widget.GridView ) चाइल्ड पर क्लिक एक्शन का एक उदाहरण निम्नलिखित है:

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "className": "com.google.samples.apps.topeka.widget.AvatarView",
      "adapterViewChildPosition": 5,
      "resourceId": "com.google.samples.apps.topeka:id/avatar",
      "contentDescription": "Avatar 6"
    },
    {
      "className": "android.widget.GridView",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/avatars"
    },
    {
      "className": "android.widget.LinearLayout",
      "groupViewChildPosition": 1
    },
    {
      "className": "android.widget.LinearLayout",
      "groupViewChildPosition": 0
    }
  ]
}

निम्नलिखित एक RecyclerView ( android.support.v7.widget.RecyclerView ) बच्चे पर एक क्लिक कार्रवाई का एक उदाहरण है:

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "className": "android.support.v7.widget.AppCompatTextView",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/category_title"
    },
    {
      "className": "android.widget.FrameLayout",
      "recyclerViewChildPosition": 8,
      "resourceId": "com.google.samples.apps.topeka:id/category_item"
    },
    {
      "className": "android.support.v7.widget.RecyclerView",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/categories"
    },
    {
      "className": "android.widget.FrameLayout",
      "groupViewChildPosition": 1,
      "resourceId": "com.google.samples.apps.topeka:id/category_container"
    },
    {
      "className": "android.widget.LinearLayout",
      "groupViewChildPosition": 0
    }
  ]
}

एंड्रॉइड स्टूडियो में रोबो स्क्रिप्ट रिकॉर्ड करें और इसे टेस्ट लैब में चलाएं

आप Android Studio में एक रोबो स्क्रिप्ट बना सकते हैं, जो स्क्रिप्ट को JSON फ़ाइल के रूप में सहेजती है। फिर आप एप्लिकेशन के साथ JSON फ़ाइल को Firebase टेस्ट लैब में अपलोड कर सकते हैं और उसके अनुसार परीक्षण चला सकते हैं।

जब आप संलग्न स्क्रिप्ट के साथ रोबो परीक्षण चलाते हैं, तो रोबो पहले आपकी पूर्व-स्क्रिप्टेड क्रियाओं के माध्यम से परीक्षण करता है और फिर हमेशा की तरह ऐप की खोज करता है।

Android Studio में एक रोबो स्क्रिप्ट JSON फ़ाइल बनाने के लिए, Android Studio में टेस्ट लैब का उपयोग करके एक रोबो स्क्रिप्ट रिकॉर्ड करें में दिए चरणों का पालन करें।

रोबो स्क्रिप्ट क्रियाएं

निम्नलिखित सामान्य वैकल्पिक विशेषता सभी कार्रवाइयों पर लागू होती है:

  • description - रोबो परीक्षण आउटपुट में इस रोबो स्क्रिप्ट क्रिया के निष्पादन को ट्रैक करने में मदद करता है।

बल देकर कहना

यदि दावा की गई स्थिति सत्य है, तो रोबो स्क्रिप्ट अगली क्रिया के लिए जारी रहती है, जो एक और अभिकथन हो सकती है। अन्यथा, असफल अभिकथन के कारण रोबो स्क्रिप्ट का निष्पादन रुका हुआ है, और परीक्षण का परिणाम FAILED है।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "ASSERTION" --
contextDescriptor मुखर संदर्भ या स्थिति का वर्णन करता है।

प्रसंग विवरणक

एक संदर्भ विवरणक एक या निम्नलिखित विशेषताओं के संयोजन का उपयोग करके संदर्भ/स्थिति को परिभाषित करता है:

विशेषता विवरण
"condition": "element_present" जांचता है कि एक UI विजेट जो visionText elementDescriptors निर्दिष्ट टेक्स्ट स्क्रीन पर मौजूद है।
"condition": "element_disabled" जांचता है कि elementDescriptors से मेल खाने वाला यूआई विजेट स्क्रीन पर मौजूद है और इसके साथ इंटरैक्ट नहीं किया जा सकता है।
"condition": "app_under_test_shown" जांचता है कि अग्रभूमि में ऐप-अंडर-टेस्ट चल रहा है।
"condition": "default_launcher_shown" जांचता है कि डिवाइस की होम स्क्रीन दिखाई दे रही है, जिसका अर्थ है कि अग्रभूमि में कोई ऐप नहीं चल रहा है।
"condition": "non_roboscript_action_performed" जाँचता है कि रोबो परीक्षण द्वारा की गई अंतिम क्रिया रोबो स्क्रिप्ट क्रिया नहीं है।
negateCondition यदि true पर सेट किया जाता है, तो condition को नकारता है। उदाहरण के लिए, आप इस विशेषता का उपयोग यह जांचने के लिए कर सकते हैं कि स्क्रीन पर UI विजेट मौजूद नहीं है, या ऐप-अंडर-टेस्ट अग्रभूमि में नहीं चल रहा है।
elementDescriptors एक या अधिक एलीमेंट डिस्क्रिप्टर जो स्क्रीन पर UI विजेट की पहचान करते हैं। इसका उपयोग element_present और element_disabled स्थितियों के संयोजन में किया जाता है। visionText के साथ परस्पर अनन्य। अधिक जानकारी के लिए एलिमेंट डिस्क्रिप्टर देखें।
visionText ऑप्टिकल कैरेक्टर रिकग्निशन (ओसीआर) एपीआई का उपयोग करके स्क्रीन पर टेक्स्ट का पता लगाया जाता है। visionText का उपयोग element_present कंडीशन के संयोजन में किया जाता है। elementDescriptors के साथ परस्पर अनन्य।

निम्नलिखित रोबो स्क्रिप्ट अभिकथन का एक उदाहरण है जो जांचता है कि ऐप-अंडर-टेस्ट अग्रभूमि में है:

{
  "eventType": "ASSERTION",
  "contextDescriptor": {
    "condition": "app_under_test_shown"
  }
}

निम्नलिखित रोबो स्क्रिप्ट अभिकथन का एक उदाहरण है जो यह जांचता है कि स्क्रीन पर संसाधन आईडी "com.google.samples.apps.topeka:id/done" वाला UI विजेट मौजूद है:

{
  "eventType": "ASSERTION",
  "contextDescriptor": {
    "condition": "element_present",
    "elementDescriptors": [
      {
        "resourceId": "com.google.samples.apps.topeka:id/done"
      }
    ]
  }
}

निम्नलिखित रोबो स्क्रिप्ट अभिकथन का एक उदाहरण है जो यह जांचता है कि ओसीआर का उपयोग करके स्क्रीन पर "Settings" का पता नहीं लगाया गया है:

{
  "eventType": "ASSERTION",
  "contextDescriptor": {
    "condition": "element_present",
    "negateCondition": true,
    "visionText": "Settings"
  }
}

क्लिक

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
eventType रोबो स्क्रिप्ट क्रिया के प्रकार को निर्दिष्ट करता है।
"eventType": "VIEW_CLICKED" ऐप-अंडर-टेस्ट के टारगेट एलिमेंट पर क्लिक करता है।
"eventType": "SOFT_KEYBOARD_CLICK" सॉफ्ट कीबोर्ड के लक्ष्य तत्व पर क्लिक करता है।
"eventType": "SOFT_KEYBOARD_RANDOM_CLICK" सॉफ्ट कीबोर्ड के यादृच्छिक तत्वों को maxNumberOfRuns बार तक क्लिक करता है।
"eventType": "LIST_ITEM_CLICKED" सूची आइटम पर क्लिक करने के लिए एंड्रॉइड स्टूडियो में रोबो स्क्रिप्ट रिकॉर्डर द्वारा उपयोग किया जाता है।
elementDescriptors Android UI पदानुक्रम का उपयोग करके क्लिक किए गए UI विजेट की पहचान करता है। visionText के साथ परस्पर अनन्य।
visionText OCR का उपयोग करके क्लिक किए गए तत्व की पहचान करता है। elementDescriptors के साथ परस्पर अनन्य।
maxNumberOfRuns जब ईवेंट SOFT_KEYBOARD_RANDOM_CLICK eventType हो, तो निर्दिष्ट करता है कि सॉफ्ट कीबोर्ड के यादृच्छिक तत्व को कितनी बार क्लिक करना है। डिफ़ॉल्ट मान 1 है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो संसाधन आईडी "com.google.samples.apps.topeka:id/done" के साथ एक बटन पर क्लिक करता है:

{
  "eventType": "VIEW_CLICKED",
  "elementDescriptors": [
    {
      "resourceId": "com.google.samples.apps.topeka:id/done"
    }
  ]
}

निम्नलिखित रोबो स्क्रिप्ट कार्रवाई का एक उदाहरण है जो ओसीआर का उपयोग करके स्क्रीन पर पाई गई "Privacy Policy" पर क्लिक करता है:

{
  "eventType": "VIEW_CLICKED",
  "visionText": "Privacy Policy"
}

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो "Emoji button" सामग्री विवरण के साथ एक सॉफ्ट कीबोर्ड तत्व पर क्लिक करता है:

{
  "eventType": "SOFT_KEYBOARD_CLICK",
  "elementDescriptors": [
    {
      "contentDescription": "Emoji button"
    }
  ]
}

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो रैंडम सॉफ्ट कीबोर्ड तत्वों को पांच बार तक क्लिक करता है:

{
  "eventType": "SOFT_KEYBOARD_RANDOM_CLICK",
  "maxNumberOfRuns": 5
}

सॉफ्ट कीबोर्ड अक्षम करें

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "DISABLE_KEYBOARD" --

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो सॉफ्ट कीबोर्ड को निष्क्रिय कर देता है:

{
  "eventType": "DISABLE_KEYBOARD"
}

एडीबी खोल कमांड निष्पादित करें

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "ADB_SHELL_COMMAND" --
command निष्पादित करने के लिए Android डीबग ब्रिज (adb) शेल कमांड।

निम्नलिखित रोबो स्क्रिप्ट कार्रवाई का एक उदाहरण है जो ऐप-अंडर-टेस्ट उपयोगकर्ता डेटा को साफ़ करता है:

{
  "eventType": "ADB_SHELL_COMMAND",
  "command": "pm clear __%APP_PACKAGE_NAME%__"
}

अनुदान की अनुमति

एस्प्रेसो टेस्ट रिकॉर्डर के साथ पिछड़ी संगतता के लिए एंड्रॉइड स्टूडियो में रोबो स्क्रिप्ट रिकॉर्डर द्वारा यह क्रिया रिकॉर्ड की गई है। रोबो परीक्षण प्रत्येक क्रॉल की शुरुआत में ऐप-अंडर-टेस्ट के लिए सभी अनुमतियां प्रदान करता है, और इस प्रकार, यह क्रिया एक नो-ऑप है। अपनी रोबो स्क्रिप्ट में इस क्रिया का प्रयोग न करें।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "PERMISSIONS_REQUEST" --

इनपुट टेक्स्ट

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
eventType रोबो स्क्रिप्ट क्रिया के प्रकार को निर्दिष्ट करता है।
"eventType": "VIEW_TEXT_CHANGED" दिए गए टेक्स्ट को लक्ष्य UI विजेट में इनपुट करता है।
"eventType": "ENTER_TEXT" दिए गए टेक्स्ट को लक्ष्य UI विजेट में इनपुट करता है और फिर इस UI विजेट में एक KEYCODE_ENTER ईवेंट भेजता है।
elementDescriptors Android UI पदानुक्रम का उपयोग करके लक्ष्य UI विजेट की पहचान करता है।
replacementText लक्ष्य UI विजेट में इनपुट करने के लिए पाठ।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो "John" को संसाधन आईडी "com.google.samples.apps.topeka:id/first_name" के साथ UI विजेट में इनपुट करता है:

{
  "eventType": "VIEW_TEXT_CHANGED",
  "replacementText": "John",
  "elementDescriptors": [
    {
      "resourceId": "com.google.samples.apps.topeka:id/first_name"
    }
  ]
}

लॉन्ग क्लिक

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "VIEW_LONG_CLICKED" --
elementDescriptors Android UI पदानुक्रम का उपयोग करके लक्ष्य UI विजेट की पहचान करता है।

निम्नलिखित विशेषता वैकल्पिक है:

  • delayTime समय - निर्दिष्ट करता है कि मिलीसेकंड में एक लंबे क्लिक का प्रेस डाउन कितने समय तक चलना चाहिए।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो सामग्री विवरण "Avatar 8" के साथ यूआई विजेट पर पांच सेकंड-लंबी क्लिक करता है:

{
  "eventType": "VIEW_LONG_CLICKED",
  "elementDescriptors": [
    {
      "contentDescription": "Avatar 8"
    }
  ],
  "delayTime": 5000
}

एक-बिंदु इशारा करें

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "ONE_POINT_GESTURE" --
coordinates एक-बिंदु हावभाव के लिए दो निर्देशांक, "(x1,y1)->(x2,y2)" के रूप में स्वरूपित प्रतिशत या पिक्सेल के रूप में।

निम्नलिखित विशेषता वैकल्पिक है:

  • dragAndDrop - यदि true , तो एक-बिंदु इशारा एक ड्रैग-एंड-ड्रॉप क्रिया करता है। डिफ़ॉल्ट रूप से, यह false है।

रोबो स्क्रिप्ट वन-पॉइंट जेस्चर क्रिया का एक उदाहरण निम्नलिखित है जो नीचे की ओर स्वाइप करता है:

{
  "eventType": "ONE_POINT_GESTURE",
  "coordinates": "(50%,25%)->(50%,75%)"
}

दो-बिंदु इशारा करें

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "TWO_POINT_GESTURE" --
coordinates दो-बिंदु हावभाव के लिए चार निर्देशांक, "(x1,y1)->(x2,y2),(x3,y3)->(x4,y4)" के रूप में स्वरूपित प्रतिशत या पिक्सेल के रूप में।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो चुटकी से इशारा करता है:

{
  "eventType": "TWO_POINT_GESTURE",
  "coordinates": "(50%,50%)->(25%,50%),(50%,50%)->(75%,50%)"
}

एक IME क्रिया करें

यह क्रिया निर्दिष्ट लक्ष्य UI विजेट के लिए इनपुट मेथड एडिटर (IME) पर वर्तमान क्रिया बटन दबाती है, उदाहरण के लिए, अगला, किया और खोजें।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "PRESSED_EDITOR_ACTION" --
elementDescriptors Android UI पदानुक्रम का उपयोग करके लक्ष्य UI विजेट की पहचान करता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो संसाधन आईडी "com.google.samples.apps.topeka:id/first_name" के साथ UI विजेट पर IME क्रिया करता है:

{
  "eventType": "PRESSED_EDITOR_ACTION",
  "elementDescriptors": [
    {
      "resourceId": "com.google.samples.apps.topeka:id/first_name"
    }
  ]
}

वापस दबाएं

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
eventType रोबो स्क्रिप्ट क्रिया के प्रकार को निर्दिष्ट करता है।
"eventType": "PRESSED_BACK" डिवाइस पर एक KEYCODE_BACK ईवेंट भेजता है।
"eventType": "PRESSED_BACK_EMULATOR_28" एमुलेटर एपीआई 28 पर वापस दबाने के लिए एंड्रॉइड स्टूडियो में रोबो स्क्रिप्ट रिकॉर्डर द्वारा उपयोग किया जाता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो वापस दबाता है:

{
  "eventType": "PRESSED_BACK"
}

घर दबाएं

यह क्रिया डिवाइस पर एक KEYCODE_HOME ईवेंट भेजती है।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "GO_HOME" --

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो घर पर दबाती है:

{
  "eventType": "GO_HOME"
}

किसी तत्व को देखने के लिए स्क्रॉल करें

यह क्रिया रोबो परीक्षण को यूआई विजेट को आगे स्क्रॉल करती है जो निर्दिष्ट elementDescriptors से मेल खाता है जब तक यूआई विजेट जो निर्दिष्ट childElementDescriptors से मेल खाता है, स्क्रीन पर मौजूद होता है, या स्क्रॉल किए गए विजेट को अब स्क्रॉल नहीं किया जा सकता है, या अधिकतम 50 स्क्रॉल तक नहीं पहुंच जाता है।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "ELEMENT_SCROLL_INTO_VIEW" --
elementDescriptors Android UI पदानुक्रम का उपयोग करके स्क्रॉल किए गए UI विजेट की पहचान करता है।
childElementDescriptors Android UI पदानुक्रम का उपयोग करने के लिए स्क्रॉल करने के लिए UI विजेट की पहचान करता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो यूआई विजेट को संसाधन आईडी "my.app.package:id/scrollable_card_container" के साथ तब तक स्क्रॉल करता है जब तक कि स्क्रीन पर "Orange" टेक्स्ट वाला यूआई विजेट मौजूद न हो (या कोई और स्क्रॉल नहीं कर सकता प्रदर्शन किया जा सकता है, या 50 स्क्रॉल की अधिकतम संख्या तक पहुँच जाता है):

{
  "eventType": "ELEMENT_SCROLL_INTO_VIEW",
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/scrollable_card_container"
    }
  ],
  "childElementDescriptors": [
    {
      "text": "Orange"
    }
  ]
}

कड़ी चोट

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "VIEW_SWIPED" --
swipeDirection स्वाइप की दिशा निर्दिष्ट करता है:
  • Left
  • Right
  • Up
  • Down
  • Forward - लक्ष्य UI विजेट की लंबवत या क्षैतिज स्क्रॉलबिलिटी के आधार पर या तो Down या Right
  • Backward - लक्ष्य UI विजेट की लंबवत या क्षैतिज स्क्रॉलबिलिटी के आधार पर या तो Up या Left
elementDescriptors Android UI पदानुक्रम का उपयोग करके लक्ष्य UI विजेट की पहचान करता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो संसाधन आईडी "my.app.package:id/custom_content" के साथ UI विजेट को स्वाइप करता है:

{
  "eventType": "VIEW_SWIPED",
  "swipeDirection": "Up",
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/custom_content"
    }
  ]
}

स्क्रीनशॉट लीजिए

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "TAKE_SCREENSHOT" --
screenshotName स्क्रीनशॉट फ़ाइल नाम निर्दिष्ट करता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो एक स्क्रीनशॉट लेता है:

{
  "eventType": "TAKE_SCREENSHOT",
  "screenshotName": "my_screenshot"
}

स्क्रीन पर एक बिंदु टैप करें

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "POINT_TAP" --
pointTapXCoordinate पिक्सेल X टैप किए गए बिंदु का समन्वय करता है। pointTapXPercent और pointTapYPercent के साथ परस्पर अनन्य।
pointTapYCoordinate पिक्सेल Y टैप किए गए बिंदु का समन्वय करता है। pointTapXPercent और pointTapYPercent के साथ परस्पर अनन्य।
pointTapXPercent प्रतिशत X टैप किए गए बिंदु का समन्वय करता है। pointTapXCoordinate और pointTapYCoordinate के साथ परस्पर अनन्य।
pointTapYPercent टैप किए गए बिंदु का प्रतिशत Y निर्देशांक। pointTapXCoordinate और pointTapYCoordinate के साथ परस्पर अनन्य।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो स्क्रीन के बीच में टैप करता है:

{
  "eventType": "POINT_TAP",
  "pointTapXPercent": 50,
  "pointTapYPercent": 50
}

एक तत्व के भीतर एक बिंदु टैप करें

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "POINT_TAP_ELEMENT" --
pointTapXPercent प्रतिशत X लक्ष्य तत्व के भीतर समन्वय करता है।
pointTapYPercent प्रतिशत Y लक्ष्य तत्व के भीतर समन्वय करता है।
elementDescriptors Android UI पदानुक्रम का उपयोग करके लक्ष्य UI विजेट की पहचान करता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो सीकबार के स्लाइडर को दाईं ओर ले जाता है:

{
  "eventType": "POINT_TAP_ELEMENT",
  "pointTapXPercent": 80,
  "pointTapYPercent": 50,
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/my_seekbar"
    }
  ]
}

क्रॉल समाप्त करें

यह क्रिया रोबो परीक्षण को रोक देती है।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "TERMINATE_CRAWL" --

रोबो स्क्रिप्ट क्रिया का एक उदाहरण निम्नलिखित है जो रोबो परीक्षण को रोकता है:

{
  "eventType": "TERMINATE_CRAWL"
}

रुकना

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "DELAYED_MESSAGE_POSTED" --
delayTime निर्दिष्ट करता है कि कितनी देर प्रतीक्षा करनी है, मिलीसेकंड में।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो तीन सेकंड तक प्रतीक्षा करता है:

{
  "eventType": "DELAYED_MESSAGE_POSTED",
  "delayTime": 3000
}

एक तत्व की प्रतीक्षा करें

यह क्रिया रोबो परीक्षण को निर्दिष्ट टाइमआउट तक स्क्रीन पर किसी तत्व के प्रदर्शित होने की प्रतीक्षा करती है।

निम्न तालिका आवश्यक विशेषताओं को सूचीबद्ध करती है:

विशेषता विवरण
"eventType": "WAIT_FOR_ELEMENT" --
delayTime प्रतीक्षा समयबाह्य निर्दिष्ट करता है, मिलीसेकंड में।
elementDescriptors Android UI पदानुक्रम का उपयोग करके प्रतीक्षारत UI विजेट की पहचान करता है।

निम्नलिखित रोबो स्क्रिप्ट क्रिया का एक उदाहरण है जो स्क्रीन पर प्रदर्शित होने के लिए संसाधन आईडी "my.app.package:id/confirmation_button" के साथ UI विजेट के लिए 30 सेकंड तक प्रतीक्षा करता है:

{
  "eventType": "WAIT_FOR_ELEMENT",
  "delayTime": 30000,
  "elementDescriptors": [
    {
      "resourceId": "my.app.package:id/confirmation_button"
    }
  ]
}

अगले कदम