Robo komut dosyaları referans kılavuzu

Bu dokümanda, Robo komut dosyalarıyla ilgili referans bilgileri yer almaktadır: yapı, özellikler, kullanım, kayıt ve işlemler. Robo komut dosyaları: mobil uygulamalar için manuel kalite güvencesi (KG) görevlerini otomatikleştiren testler ve sürekli entegrasyon (CI) ve lansman öncesi test stratejilerini mümkün kılar. Robo komut dosyası, bir kullanıcı arayüzü dizisini (UI) açıklayan bir JSON dosyasıdır diğer işlemler.

Robo komut dosyasını aşağıdaki şekillerde oluşturabilirsiniz:

  • Robo komut dosyası kayıt özelliğini kullanın. (Yalnızca Android)

  • Robo komut dosyasını manuel olarak oluşturun. (Android ve iOS+)

  • Robo komut dosyasını kaydedip manuel olarak düzenleyin. (Yalnızca Android)

Robo komut dosyalarını kullanma hakkında daha fazla bilgi edinmek için Robo'yu çalıştırma komut dosyası olarak adlandırılır.

Giriş

Robo komut dosyası, "App-under-test" Android Uygulama Paketi (APK)

Aşağıda, kullanıcının uygulamada oturum açmasını sağlayan Robo komut dosyasına bir örnek verilmiştir. Bu, aşağıda gösterilen uygulama çalıştırıldığında tetiklenir:

[
  {
    "crawlStage": "crawl",
    "contextDescriptor": {
      "condition": "app_under_test_shown"
    },
    "actions": [
      {
        "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"
          }
        ]
      }
    ]
  }
]

Bir dosyada tek bir Robo komut dosyası varsa ve komut dosyası varsayılan olarak app_under_test_shown tetikleme koşulu, yukarıdaki örnekte olduğu gibi basit bir biçim kullanarak Robo komut dosyasını bir dosyada belirtebilirsiniz (tıpkı bir bir dizi işlem bulunur:

[
  {
    "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"
      }
    ]
  }
]

Robo komut dosyaları için iOS+ desteği

iOS+ için Robo (Beta), Robo komut dosyaları için sınırlı desteğe sahiptir. İlgili içeriği oluşturmak için kullanılan iOS+ için Robo komut dosyası söz dizimi, Android söz dizimiyle aynıdır ve desteklenen iOS+ özellikleri, Android'deki eşdeğerleriyle benzerdir.

Aşağıdaki işlemler iOS+'ta desteklenir:

  • Onaylama
  • Tıklama
  • Uzun tıklama
  • Kaydırma
  • Tüm öğeleri yoksay
  • Bekle
  • Ekran görüntüsü al
  • Taramayı sonlandır

Öğe tanımlayıcılarında aşağıdaki tanımlayıcı özellikler desteklenir iOS+:

  • Sınıf adı
  • Üst sınıf adı
  • İçerik açıklaması (ve normal ifade)
  • Metin (ve normal ifade)

Bağlam tanımlayıcılarda aşağıdaki tetikleme koşulları desteklenir: iOS+:

  • Test altındaki uygulama gösteriliyor
  • Öğe mevcut
  • Robo komut dosyası olmayan işlem gerçekleştirildi

Yapı

Robo komut dosyalarının Robo'nun komut dosyasını nasıl yürüttüğünü açıklayan çeşitli özellikleri vardır. Bu özelliklerin çoğu önceden tanımlanmış varsayılan değerlerle isteğe bağlıdır:

Özellik Açıklama
id Tarama çıkışlarında bu Robo komut dosyasının izlenmesine yardımcı olan bir tam sayı. Robo'nun kendi id'leri olan yerleşik Robo komut dosyaları vardır. Her ne kadar farklı Robo komut dosyalarındaki aynı id, komut dosyalarının davranışı, tarama çıkışlarında işlemleri bu Robo komut dosyalarından ayırt eder zorlayıcı olabilir. URL'nin benzersiz bir id Çakışmaları önlemek amacıyla Robo komut dosyalarınız için 1000 veya üzeri.
description id özelliğine benzer ancak daha açıklayıcıdır.
crawlStage Tarama Robo'nun aşaması, bu Robo komut dosyasını uygular. Varsayılan olarak ana tarama aşamasıdır.
priority Bu Robo komut dosyasının diğer Robo komut dosyalarına göre önceliği. Varsayılan olarak tüm Robo komut dosyalarının önceliği 1 şeklindedir.
maxNumberOfRuns Robo'nun tarama sırasında bu Robo'yu kaç kez yürütebileceğini belirtir komut dosyası. Robo varsayılan olarak Robo komut dosyasını bir defa yürütebilir.
contextDescriptor Bu Robo komut dosyasını tetikleyen bağlamı veya koşulu açıklar. Atlanırsa bu Robo komut dosyasının tetikleme koşulu her zaman karşılanır. diğer bir deyişle, Robo komut dosyası koşulsuzdur.
actions Bu Robo komut dosyasının tüm işlemleri.

Tek bir dosyada, bir veya daha fazla Robo komut dosyası koleksiyonu bulunur.

Aşağıda, her biri koşulsuz iki Robo komut dosyası içeren taramanın başında bir kez yürütülen tek bir işlemle:

[
  {
    "id": 1000,
    "description": "My first Robo script",
    "actions": [
      {
        "eventType": "DISABLE_KEYBOARD"
      }
    ]
  },
  {
    "id": 1001,
    "description": "My second Robo script",
    "actions": [
      {
        "eventType": "PRESSED_BACK"
      }
    ]
  }
]

Bağlam açıklayıcı

Bağlam tanımlayıcı, Robo'yu tetikleyen bağlamı veya koşulu tanımlar komut dosyası için bir veya birden fazla özelliğin bir kombinasyonunu kullanın:

Özellik Açıklama
"condition": "always" Her zaman bir Robo komut dosyasını tetikler.
"condition": "element_present" elementDescriptors veya visionText ile belirtilen metin ekranda var.
"condition": "element_disabled" elementDescriptors ile eşleşen bir kullanıcı arayüzü widget'ının olup olmadığını kontrol eder ve etkileşimde bulunulamaz.
"condition": "element_checked" elementDescriptors ile eşleşen bir kullanıcı arayüzü widget'ının olup olmadığını kontrol eder ekranda görünür ve işaretlenir.
"condition": "app_under_test_shown" Altta uygulama testinin ön planda çalışıp çalışmadığını kontrol eder.
"condition": "default_launcher_shown" Cihazın ana ekranının gösterilip gösterilmediğini kontrol eder. Yani hiçbir uygulama ön planda çalışıyor.
"condition": "non_roboscript_action_performed" Art arda son nonRoboscriptActionCount Robo testi tarafından gerçekleştirilen işlemler, Robo komut dosyası işlemleri değildir.
negateCondition true olarak ayarlanırsa condition geçersiz kılınır. Örneğin, bir kullanıcı arayüzü widget'ının DEĞİL veya altındaki uygulama testinin şurada ÇALIŞMADIĞINI ön plan.
elementDescriptors Ekranda bir kullanıcı arayüzü widget'ını tanımlayan bir veya daha fazla öğe tanımlayıcısı. element_present, element_disabled element_checked conditions. visionText ile karşılıklı olarak hariç. Daha fazla Öğe tanımlayıcıları bölümüne bakın.
visionText Ekrandaki metin, optik karakter tanıma ile algılanır (OCR) API'ye gidin. visionText, element_present koşulu. Şunlarla birlikte dışlayıcı: elementDescriptors
nonRoboscriptActionCount Daha önce gerçekleştirilen art arda Robo olmayan komut dosyası işlemlerinin sayısı. Evet non_roboscript_action_performed ile birlikte kullanılır her çalıştırmadan sonra bir Robo komut dosyasını tetikleme koşulu nonRoboscriptActionCount Robo işlemi. Bu ayar varsayılan olarak 1

Aşağıda, kullanıcı arayüzü widget'ı tarafından tetiklenen bir Robo komut dosyası örneği verilmiştir "my.app.package:id/page_header" kaynak kimliği ile ekran:

{
  "id": 1000,
  "contextDescriptor": {
    "condition": "element_present",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/page_header"
      }
    ]
  },
  "actions": [
    {
      "eventType": "VIEW_CLICKED",
      "elementDescriptors": [
        {
          "text": "Settings"
        }
      ]
    }
  ]
}

Aşağıda, her bir komut dosyası tarafından tetiklenen bir Robo komut dosyası Optik Karakter Tanıma (OCR) tarafından "Privacy Policy" algılandı:

{
  "id": 1000,
  "description": "Vision text Robo script",
  "contextDescriptor": {
    "condition": "element_present",
    "visionText": "Privacy Policy"
  },
  "actions": [
    {
      "eventType": "VIEW_CLICKED",
      "visionText": "Privacy Policy"
    }
  ]
}

Aşağıda, 3 saniye içinde 5 saniye bekleyen bir Robo komut dosyası komut dosyası olmayan her Robo işlemi:

{
  "contextDescriptor": {
    "condition": "non_roboscript_action_performed"
  },
  "maxNumberOfRuns" : 1000,
  "actions" : [
    {
      "eventType" : "DELAYED_MESSAGE_POSTED",
      "delayTime" : 5000
    }]
}

İşlemler

Robo komut dosyasındaki her eylem, bir veya daha fazla öğeden oluşan bir paket olarak temsil edilir özellik-değer çiftlerinin özellikleri vardır:

Özellik Açıklama
eventType İşlemin türünü (ör. tıklama, metin düzenleme vb.) belirtir. Her işlem için gereklidir.
elementDescriptors Bir kullanıcı arayüzü widget'ını tanımlayan tanımlayıcılar. Şu özelliklere sahip tüm işlemler için gereklidir: bir hedef kullanıcı arayüzü widget'ı (ör. belirli bir düğmeyi tıklamak)
optional true olarak ayarlanırsa bu işlem şu anda atlanır. gerçekleştirildi. Örneğin, bir ekrandaki hedef kullanıcı arayüzü widget'ını içeren Robo'yu değiştirmeden komut dosyası. Varsayılan olarak bu değer false şeklindedir.
replacementText Hedef kullanıcı arayüzü widget'ına girilecek metin. Metin düzenleme için gereklidir işlemlerdir.
swipeDirection Kaydırmanın yönünü belirtir. Kaydırma işlemleri için gereklidir.
delayTime Ne kadar süre bekleneceğini (milisaniye cinsinden) belirtir. Bekleme işlemleri için gereklidir.
pointTapXCoordinate ve pointTapYCoordinate Dokunulan noktanın X ve Y pikseli koordinatları. Birlikte dışlar pointTapXPercent ve pointTapYPercent ile. Üzerine dokunma işlemleri için gereklidir.
pointTapXPercent ve pointTapYPercent Dokunulan noktanın X ve Y koordinatlarının yüzdesi. Karşılıklı olarak pointTapXCoordinate ve pointTapYCoordinate. Üzerine dokunma işlemleri için gereklidir.

Aşağıda, hedef içermeyen iki işlem içeren bir Robo komut dosyası örneği verilmiştir Kullanıcı arayüzü widget'ları; yani bu işlemler belirli bir kullanıcı arayüzünde çalışmaz widget'ı:

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

Öğe tanımlayıcıları

Bir öğe tanımlayıcısı, şu tanımlayıcı özellikleri kullanın:

Özellik Açıklama
className
ancestorClassName Öğenin kullanıcı arayüzü hiyerarşisi üst öğesinin sınıf adı. Bir üst öğe herhangi bir öğe dahil olmak üzere öğenin kullanıcı arayüzü hiyerarşisindeki üst düğümlerin kendisi.
resourceId
resourceIdRegex resourceId ile eşleşecek Java normal ifadesi.
contentDescription
contentDescriptionRegex contentDescription ile eşleşecek Java normal ifadesi.
text (ekranda görünür)
textRegex text ile eşleşecek Java normal ifadesi.
groupViewChildPosition, recyclerViewChildPosition veya adapterViewChildPosition Kullanıcı arayüzü widget'ının türüne bağlı olarak alt konumunu temsil eder. widget'ı tıklayın.

Bu özellikler genellikle tanımlanamaz. Örneğin, bir düğme metin ve içerik açıklamaları olabilir. Bazı özellik değerleri mevcut olsa bile, belirli bir uygulama ekranında benzersiz olmayabilirler (resourceId dahil).

Örneğin, bir listedeki öğeler arasında ayrım yapmak genellikle yalnızca bunları üst widget'larında farklı alt konumları kullanarak oluşturabilirler. Bunun anlamı şudur: kullanıcı arayüzü widget'ını tanımlamak için yalnızca bir öğe açıklayıcısı kullanmanın genellikle yeterli değildir. Bu nedenle, bir işlemin elementDescriptors özelliği ilkinin en başarılı şekilde sıralanmış öğe tanımlayıcıları dizisi ikincisi ise hedefe karşılık gelir. Kullanıcı arayüzü widget'ının üst widget'ı, vb. Bir işlemin hedef kullanıcı arayüzü widget'ı eşleştirildiğinde tüm öğe tanımlayıcıları ilgili kullanıcı arayüzü widget'ıyla eşleştiğinde alt hiyerarşisini ifade eder.

Aşağıda metin değişikliği ve tıklama içeren bir Robo komut dosyası örneği verilmiştir her ikisi de aşağıdakileri kullanarak hedef kullanıcı arayüzü widget'ını tanımlamanızı gerektirir: şu öğe tanımlayıcılarını kullanın:

[
  {
    "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"
      }
    ]
  }
]

Yürütme seçenekleri

İsteğe bağlı olarak Robo komut dosyasındaki işlem listesinin önüne JSON'u ekleyebilirsiniz Robo komut dosyası için yürütme seçeneklerini belirten nesnedir. Bu yapılandırma başlığı roboscript anahtar kelimesiyle başlar ve ardından bir İstenen yürütme seçeneklerinin JSON gösterimi.

Robo komut dosyaları aşağıdaki yürütme seçeneklerini destekler:

  • executionMode - Robo komut dosyası çalışırken yürütme seçenekleri uygulandı:
    • strict - true değerine ayarlanırsa Robo komut dosyası kullanılmaz kısmi eşleme, geçerli işlemi atlama ve askıya alma. Yani Robo komut dosyası, normal bir araç testi olarak ve işlemlerinden herhangi biri gerçekleştirilemediğinde başarısız olur. Varsayılan olarak false.
    • dismiss_popups - true değerine ayarlanırsa Robo test beklenmedik tüm sorunları kapatır strict modundayken bile Robo komut dosyası gerçekleştirilirken iletişim kutuları görüntülenir. Bu strict modunda değilken bu seçeneğin hiçbir etkisi olmaz. Bu ayar varsayılan olarak false
    • notify - false olarak ayarlanırsa Robo komut dosyası ekranda görünmüyor bir bildirim almayı tercih edebilir. Varsayılan olarak true.
  • postscript - Robo komut dosyası tamamlandıktan sonra uygulanan yürütme seçenekleri:
    • terminate - true olarak ayarlanırsa Robo testi, Robo'dan sonra taramayı durdurur komut dosyası tamamlandı. Bu değer varsayılan olarak false şeklindedir.

Aşağıda, strict modunda çalıştırılan ve ekrandaki bildirimlerle ilgili bilgiler, üç saniye uyku moduna geçtikten sonra durak:

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

Şablon parametreleri

Şablon parametresi, Robo komut dosyasındaki bir yer tutucudur ve Robo test çalıştırılmak üzere Robo komut dosyasını yüklediğinde gerçekleşen gerçek değeri ifade eder. Şablon parametrelerin önünde çift alt çizgi ve ardından yüzde işareti bulunur, ve ardından çift alt çizgi bulunan yüzde işaretidir.

Robo komut dosyaları aşağıdaki şablon parametresini destekler:

  • __%APP_PACKAGE_NAME%__ - test altında uygulamanın paket adı.

Aşağıda, App-under-test'i durduran bir Robo komut dosyası örneği verilmiştir işlem:

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

Yorumlar

Robo komut dosyası yorum satırları, yani # veya //.

Aşağıda, birkaç yorum içeren bir Robo komut dosyası örneği verilmiştir:

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

Özellikler

Robo komut dosyasının tüm işlemleri tamamlanana kadar (veya en azından denendiğinde, Robo komut dosyası etkin kalır. Robo test sürekli olarak Gerçekleştirilecek eylemi seçerken Robo komut dosyası işlemi Robo komut dosyası sağlamlığı artırmak için aşağıdaki teknikleri kullanır:

Teknik Açıklama
Kısmi eşleme Geçerli Robo komut dosyası işlemi tam olarak eşleştirilemezse ölçüt gevşetildi ve eşleşme yeniden deneniyor. Kısmi eşleme , Robo komut dosyası işleminin hedef kullanıcı arayüzü widget'ı.

Kısmi eşleme başarılı olursa ilgili Robo komut dosyası işlemi her zamanki gibi gerçekleştirilir. Bu teknik, uygulama yapısı değişiklikleri (ör. uygulama sürümleri arasında) öğeler yeniden düzenlenir.

Geçerli işlemi atla Mevcut Robo komut dosyası işlemi tamamen veya kısmen eşleştirilemiyorsa Robo, sonraki Robo komut dosyası işlemini eşleştirmeye çalışır. Sonraki eylem tamamen veya kısmen eşleşir, Robo test atlar (ve hiçbir zaman geri dönmez) Robo komut dosyası işlemine izin verir ve bir sonrakini gerçekleştirir.

Bu teknik, uygulama davranışının veya kesintili bir iletişim kutusu olduğundan emin olun. Robo'nun kaydı sırasında ve tekrar oynatılırken farklı ekranlarda görünür. komut dosyası.

Askıya al Mevcut veya sonraki Robo komut dosyası işlemlerinin hiçbiri tamamen veya kısmen eşleşti, Robo komut dosyası geçici olarak askıya alındı ve Robo test Diğer stratejilerini kullanarak gerçekleştirecek bir işlem seçtiğinde. Bu işlemden sonra tamamlandığında Robo testi, Robo komut dosyasını yürütmeye devam eder.

Mevcut veya sonraki Robo komut dosyası işlemleri eşleştirilemediği sürece Robo komut dosyası, istenen sayıda işlem için askıya alınmış durumda kalacak. Bu nedenle Robo komut dosyalarının bir Robo testi için önsöz olması gerekmez. ve Robo komut dosyası işlemlerini standart Robo test ile karıştırabilirsiniz işlemlerdir. Bu teknik, uygulama davranışının kesintili olduğu, veya uygulama sürümleri arasındaki değişiklikler Robo'nun test edebileceği kadar büyük olduğunda "boşlukları doldurması" standart eylemleriyle.

Öncelikler

Bir Robo komut dosyası maxNumberOfRuns değerine ulaşırsa artık tetiklenemez belirli bir taramayı kapsar. Mevcut komut dosyası birden fazla Robo komut dosyasını tetikleyebiliyorsa bağlam, öncelik aşağıdaki sırayla Robo komut dosyası seçilerek verilir şu bilgileri sağlar:

  1. contextDescriptor özelliği var.
  2. En yüksek priority değerine sahiptir (varsayılan olarak tüm Robo komut dosyaları aynı yürütme priority/1).
  3. Robo komut dosyalarıysa, Robo komut dosyaları listesinde en önce görünür öncelikler aynıdır.

Aşağıdaki örnekte aynı işlem ve aynı koşul tarafından tetiklenir. Alttaki uygulama testi ön planda:

[
  {
    "id": 1000,
    "description": "Robo script 1",
    "contextDescriptor": {
      "condition": "app_under_test_shown"
    },
    "actions": [
      {
        "eventType": "DELAYED_MESSAGE_POSTED",
        "delayTime": 3000
      }
    ]
  },
  {
    "id": 1001,
    "description": "Robo script 2",
    "priority": "2",
    "contextDescriptor": {
      "condition": "app_under_test_shown"
    },
    "actions": [
      {
        "eventType": "DELAYED_MESSAGE_POSTED",
        "delayTime": 3000
      }
    ]
  },
  {
    "id": 1002,
    "description": "Robo script 3",
    "contextDescriptor": {
      "condition": "app_under_test_shown"
    },
    "actions": [
      {
        "eventType": "DELAYED_MESSAGE_POSTED",
        "delayTime": 3000
      }
    ]
  }
]

Altta uygulama testi ön planda çalışırken Robo sipariş:

  1. "Robo script 2" en yüksek önceliğe sahip olduğu için.
  2. Diğer uygun seçenekler arasında daha önce göründüğü için "Robo script 1" Aynı önceliğe sahip Robo komut dosyaları.
  3. "Robo script 3", geçerli son Robo komut dosyası olarak değiştirildi.

Tekrarlanan çalıştırmalar

Robo varsayılan olarak tarama sırasında bir Robo komut dosyasını en fazla bir kez tetikler. Bu özellik, maxNumberOfRuns özelliği aracılığıyla düzenlenir.

Aşağıda, app-under-test uygulamasını arka planı 10 kata kadar izleyebilirsiniz:

{
  "id": 1000,
  "maxNumberOfRuns": 10,
  "contextDescriptor": {
    "condition": "app_under_test_shown"
  },
  "actions": [
    {
      "eventType": "GO_HOME"
    }
  ]
}

Tarama aşaması

Robo komut dosyaları, belirli bir Robo taramasının farklı aşamalarında uygulanabilir:

Tarama aşaması Açıklama
pre_crawl Robo başlatılıp test altındaki uygulamayı taramaya başlamadan önce.
post_crawl Robo, test altında uygulamayı taramayı bitirdikten sonra.
crawl Robo'nun test altında uygulamayı taradığı ana tarama aşaması.
close_screen Robo belirli bir ekrandan geri dönmeye (geri izleme) çalıştığında bu ekrandaki olası tüm işlemler incelenir. Robo varsayılan olarak geri basar. Bu, bazı senaryolarda istenmeyen bir durumdur.

Bir Robo komut dosyasının crawlStage özelliği belirtilmemişse, komut dosyasının crawl olmalıdır.

Aşağıda, uygulama altındaki test kullanıcısını temizleyen bir Robo komut dosyası örneği verilmiştir aşağıdaki verileri kontrol edin:

{
  "id": 1000,
  "crawlStage": "pre_crawl",
  "actions": [
    {
      "eventType": "ADB_SHELL_COMMAND",
      "command": "pm clear __%APP_PACKAGE_NAME%__"
    }
  ]
}

Aşağıda, Robo'ya tıklama talimatı veren bir Robo komut dosyası örneği verilmiştir Her onaydan geri dönmeye çalıştığında (geri dönüş) "Cancel" iletişim kutusu:

{
  "id": 1000,
  "crawlStage": "close_screen",
  "maxNumberOfRuns": 999,
  "contextDescriptor": {
    "condition": "element_present",
    "elementDescriptors": [
      {
        "resourceId": "my.app.package:id/confirmation_dialog"
      }
    ]
  },
  "actions": [
    {
      "eventType": "VIEW_CLICKED",
      "elementDescriptors": [
        {
          "text": "Cancel"
        }
      ]
    }
  ]
}

Koşullu eylemler

Robo komut dosyası koşullu işlemler içerebilir. Koşullu işlemlerde üç Robo'nun bu işlemleri nasıl gerçekleştirdiğini açıklayan ek özellikler:

Özellik Açıklama
priority Bu koşullu işlemin diğer içeren Robo komut dosyası içindeki koşullu işlemlerdir. Varsayılan olarak tümü koşullu işlemlerin önceliği 1.
maxNumberOfRuns Bu koşullu işlemin tek bir işlem sırasında kaç kez gerçekleştirilebileceği komut dosyasının yürütülmesine yardımcı olur. Varsayılan olarak, tüm koşullu İşlemler tek bir yürütülmesinde en fazla bir kez Robo komut dosyası içeren bir komut dosyasıdır.
contextDescriptor Bu koşullu işlemi tetikleyen bağlam/koşul. İçinde şirketine, web sitesine veya Robo komut dosyasının bağlam Açıklayıcısı

Bir Robo komut dosyası tetiklendiğinde, koşullu olmayan işlemlerini görünme sırası. Robo komut dosyası koşullu işlemler içeriyorsa her seferinde göz önünde bulundurulur. Eğer tüm koşullu işlemler, işlemlerin önceliğine ve şartlarına göre tetiklenir sonra Robo komut dosyası bu koşullu işlemi gerçekleştirir. Aksi takdirde, Robo komut dosyası aşağıdaki koşulsuz işlemi gerçekleştirir. Şunlar: Robo komut dosyası en az bir tane koşulsuz işlem içermelidir.

Aşağıda, Robo sırasında herhangi bir noktada ortaya çıkan pop-up iletişim kutularını kapatan işlem komut dosyası yürütme:

{
  "id": 1000,
  "actions": [
    {
      "description": "Dismiss popup",
      "maxNumberOfRuns": 100,
      "contextDescriptor": {
        "condition": "default_launcher_shown",
        "negateCondition": true
      },
      "eventType": "GO_HOME"
    },
    {
      "description": "Screen off",
      "eventType": "ADB_SHELL_COMMAND",
      "command": "input keyevent 26"
    },
    {
      "description": "Wait for 10 seconds",
      "eventType": "DELAYED_MESSAGE_POSTED",
      "delayTime": 10000
    },
    {
      "description": "Screen on",
      "eventType": "ADB_SHELL_COMMAND",
      "command": "input keyevent 82"
    },
    {
      "description": "Wait for 10 seconds",
      "eventType": "DELAYED_MESSAGE_POSTED",
      "delayTime": 10000
    }
}

İşlemler yoksayılıyor

Robo komut dosyası, Robo'nun belirli kullanıcı arayüzünü yoksaymasına yönelik talimatlar içerebilir tüm kullanıcı arayüzü widget'larını kullanabilirsiniz. Bu talimatlar: "işlemlerin" göz ardı edilmesi olarak temsil edilir eventType ELEMENT_IGNORED ve ALL_ELEMENTS_IGNORED.

Robo komut dosyasının contextDescriptor özelliğinde yoksayılan action'lar belirli bir ekranla eşleşiyorsa Robo herhangi bir kullanıcı arayüzü widget'ıyla etkileşime geçmiyor hariç tutma eylemleri tarafından hedeflenir (başka bir Robo komut dosyası işlemi Robo, yoksayılan kullanıcı arayüzü widget'larından birinde bir işlem gerçekleştirir.

Robo komut dosyaları yoksayma, koşullu ve koşulsuz olmak üzere işlemlerdir. Diğer Robo komut dosyası işlemlerinden farklı olarak içeren Robo komut dosyasına ait contextDescriptor öğesini içeren bir ekranla eşleşir. priority ve maxNumberOfRuns değerlerinden bağımsız olarak Robo taraması özellikleri hakkında daha fazla bilgi edinin.

Aşağıda iki Robo komut dosyası içeren bir dosya örneği verilmiştir. İlk Robo komut dosyası, Robo'nun "my.app.package:id/ignored_screen" kaynak kimliği. İkinci Robo komut dosyası Robo, bir".*:id/done" kaynak kimliğine sahip bir kullanıcı arayüzü widget'ı içeren ekran "my.app.package:id/main_screen":

[
  {
    "id": 1000,
    "contextDescriptor": {
      "condition": "element_present",
      "elementDescriptors": [
        {
          "resourceId": "my.app.package:id/ignored_screen"
        }
      ]
    },
    "actions": [
      {
        "eventType": "ALL_ELEMENTS_IGNORED"
      }
    ]
  },
  {
    "id": 1001,
    "contextDescriptor": {
      "condition": "element_present",
      "elementDescriptors": [
        {
          "resourceId": "my.app.package:id/main_screen"
        }
      ]
    },
    "actions": [
      {
        "eventType": "ELEMENT_IGNORED",
        "elementDescriptors": [
          {
            "resourceIdRegex": ".*:id/done"
          }
        ]
      }
    ]
  }
]

RecyclerView ve AdapterView desteği

RecyclerView ve AdapterView widget'larının alt öğeleri dinamik olarak yüklenir. çok sayıda kaydırma hareketiyle gösterilebilir. Projenin ekranı ve bu çocuğa ulaşmak için gereken kaydırma sayısı farklı farklı cihaz form faktörlerinde, teknik açıdan çok daha alt veri konumu olarak ayarlanmıştır. Bu yaklaşım, güvenilir olmayan kaç kez kaydırması gerektiğini kontrol edin. ardından ekran konumunu kullanın.

Bu nedenle Robo komut dosyası RecyclerView'un mutlak veri konumlarını yakalar. Robo komut dosyası işlemlerinin hedefi olan recyclerViewChildPosition Robo komut dosyası ayrıca mutlak verileri yakalar Robo komut dosyası işlemlerinin hedefi olan AdapterView alt öğelerinin konumları adapterViewChildPosition

RecyclerView ve AdapterView alt alanlarındaki işlemler aşağıda gerçekleştirilir: için şu adımları izleyin:

  1. Robo testi ilgili alt çocuğun ekranda görüntülenmesini sağlar. konumlandırarak RecyclerView veya AdapterView içeren yapılandırma işlemlerine sahip olabilirsiniz.

  2. Robo test, kaydedilen işlemi doğrudan alt öğe üzerinde gerçekleştirir. Bunun nedeni, ekranda zaten görüntüleniyor.

Aşağıda, AdapterView'daki bir tıklama işlemi örneği verilmiştir (android.widget.GridView) alt:

{
  "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
    }
  ]
}

Aşağıda, RecyclerView'daki bir tıklama işlemi örneği verilmiştir. (android.support.v7.widget.RecyclerView) alt:

{
  "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'da Robo komut dosyası kaydetme ve Test Lab'de çalıştırma

Android Studio'da, komut dosyasını şu şekilde kaydeden bir Robo komut dosyası oluşturabilirsiniz: JSON dosyası biçimindedir. Daha sonra JSON dosyasını Firebase Test Lab'e yükleyebilirsiniz ve testi uygun şekilde çalıştırmanız gerekir.

Komut dosyası ekli bir Robo testi çalıştırdığınızda, Robo test ilk olarak ardından uygulamayı her zamanki gibi keşfeder.

Android Studio'da Robo komut dosyası JSON dosyası oluşturmak için şuradaki adımları uygulayın: Android Studio'da Test Lab'i kullanarak Robo komut dosyası kaydetme.

Robo komut dosyası işlemleri

Aşağıdaki yaygın isteğe bağlı özellik tüm işlemler için geçerlidir:

  • description - bu Robo komut dosyası işleminin Robo'da yürütülmesinin izlenmesine yardımcı olur test çıktılarıdır.

Onaylama

Onaylanan koşul doğruysa Robo komut dosyası sonraki Bu da başka bir onay olabilir. Aksi takdirde, Robo komut dosyası yürütülürse başarısız bir onay nedeniyle durduruldu.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "ASSERTION" --
contextDescriptor İddia edilen bağlamı veya koşulu açıklar. Aynı yapıya sahiptir ve ile benzer özellikler sunar. Robo komut dosyasının contentDescriptor'ını değiştirmeniz gerekir.

Aşağıda, app-under-test ön planda:

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

Aşağıda, kullanıcı arayüzünün "com.google.samples.apps.topeka:id/done" kaynak kimliğine sahip widget ekranda gösterme:

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

Aşağıda, Robot komut dosyası onayına ilişkin bir örnek "Settings" işlevinin OCR kullanılarak ekranda ALGILANMADIĞINI gösterir:

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

Tıklama

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
eventType Robo komut dosyası işleminin türünü belirtir.
"eventType": "VIEW_CLICKED" Uygulama altında test edilen uygulamanın hedef öğesini tıklar.
"eventType": "SOFT_KEYBOARD_CLICK" Yazılım klavyesinin hedef öğesini tıklar.
"eventType": "SOFT_KEYBOARD_RANDOM_CLICK" Yazılım klavyesinin rastgele öğelerini en fazla tıklama maxNumberOfRuns defa.
"eventType": "LIST_ITEM_CLICKED" Android Studio'da Robo komut dosyası kaydedici tarafından tıklama listesi için kullanılır öğeler.
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak tıklanan kullanıcı arayüzü widget'ını tanımlar. visionText ile karşılıklı olarak hariç.
visionText OCR kullanarak tıklanan öğeyi tanımlar. Şunlarla birlikte dışlayıcı: elementDescriptors
maxNumberOfRuns Yumuşak klavyenin rastgele bir öğesinin kaç kez tıklanacağını belirtir. eventType SOFT_KEYBOARD_RANDOM_CLICK olduğunda. Varsayılan değer 1 değeridir.

Aşağıda, "com.google.samples.apps.topeka:id/done" kaynak kimliği:

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

Aşağıdaki örnek bir Robo komut dosyası işlemidir: Ekranda OCR ile "Privacy Policy" algılandı:

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

Aşağıdaki örnek, bir soft (ya da uzun süre) düğmesini tıklayan içerik açıklaması "Emoji button" olan klavye öğesi:

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

Aşağıda, rastgele soft komutunu tıklayan bir Robo komut dosyası işlemi örneği verilmiştir klavye öğelerini beş kez kullanabilirsiniz:

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

Yazılım klavyesini devre dışı bırak

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "DISABLE_KEYBOARD" --

Aşağıda, soft komut dosyasını devre dışı bırakan bir Robo komut dosyası işlemi örneği verilmiştir: klavye:

{
  "eventType": "DISABLE_KEYBOARD"
}

Adb kabuk komutunu yürütme

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "ADB_SHELL_COMMAND" --
command Yürütülecek Android Debug Bridge (adb) kabuk komutu.

Aşağıdaki özellik isteğe bağlıdır:

  • expectedOutputRegex: Java normali olarak komutun beklenen çıkışı ifade eder. Çıkış eşleşmezse Robo komut dosyası işlemi başarısız olur. Ölçüt varsayılan değeri boş bir dizedir. Yani çıkış kontrol edilmez.

Aşağıda, uygulama altındaki test kullanıcısı verileri:

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

İzin verin

Bu işlem, Android Studio'daki Robo komut dosyası kaydedici tarafından şunun için kaydedilir: Espresso Test Kaydedici ile geriye dönük uyumluluk. Robo test, testin başında uygulama testi için tüm izinleri verir her tarama için geçerlidir. Bu nedenle, bu işlem bir işlem değildir. Bu işlemi Robo komut dosyaları.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "PERMISSIONS_REQUEST" --

Ekrandaki tüm öğeleri yoksay

Bu işlem, Robo'nun Robo komut dosyası içeren bir komut dosyasıdır.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "ALL_ELEMENTS_IGNORED" --

Aşağıda, Robo'nun tüm komut dosyalarını yoksaymasını sağlayan bir Robo komut dosyası işlemi örneği verilmiştir ekrandaki öğeler:

{
  "eventType": "ALL_ELEMENTS_IGNORED"
}

Bir öğeyi yoksay

Bu işlem, Robo'nun belirtilen elementDescriptors

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "ELEMENT_IGNORED" --
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak yoksayılan kullanıcı arayüzü widget'larını tanımlar.

Aşağıdaki özellik isteğe bağlıdır:

  • ignoreChildren - true değerine ayarlanırsa Robo ayrıca yoksayılan kullanıcı arayüzü widget'larını tıklayın. Bu değer varsayılan olarak false şeklindedir.

Aşağıda, Robo'nun tüm komut dosyalarını yoksaymasını sağlayan bir Robo komut dosyası işlemi örneği verilmiştir öğeleri (içerik açıklamaları "Avatar" ile başlayan öğeler)

{
  "eventType": "ELEMENT_IGNORED",
  "elementDescriptors": [
    {
      "contentDescriptionRegex": "Avatar.*"
    }
  ]
}

Girdi metni

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
eventType Robo komut dosyası işleminin türünü belirtir.
"eventType": "VIEW_TEXT_CHANGED" Belirtilen metni hedef kullanıcı arayüzü widget'ına girer.
"eventType": "ENTER_TEXT" verilen metni hedef kullanıcı arayüzü widget'ına girer ve ardından, Bu kullanıcı arayüzü widget'ına KEYCODE_ENTER etkinliği.
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak hedef kullanıcı arayüzü widget'ını tanımlar.
replacementText Hedef kullanıcı arayüzü widget'ına girilecek metin.

Aşağıda, "John" değerini giren Robo komut dosyası işlemine bir örnek kaynak kimliğine sahip bir kullanıcı arayüzü widget'ı "com.google.samples.apps.topeka:id/first_name":

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

Uzun tıklama

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "VIEW_LONG_CLICKED" --
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak hedef kullanıcı arayüzü widget'ını tanımlar. Karşılıklı olarak yalnızca visionText için geçerlidir.
visionText OCR kullanarak uzun tıklanan öğeyi tanımlar. Şunlarla birlikte dışlayıcı: elementDescriptors

Aşağıdaki özellik isteğe bağlıdır:

  • delayTime - Uzun bir tıklamada basılı tutma işleminin ne kadar süreceğini belirtir. milisaniye cinsinden ayarlanır.

Aşağıda, beş farklı dil kullanan Robo komut dosyası işlemi içerik açıklaması "Avatar 8" olan kullanıcı arayüzü widget'ında saniye uzunluğundaki tıklama:

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

Tek noktalı hareketi gerçekleştirme

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "ONE_POINT_GESTURE" --
coordinates Tek noktalı bir hareket için "(x1,y1)->(x2,y2)" biçiminde iki koordinat yüzde veya piksel olarak ifade eder.

Aşağıdaki özellik isteğe bağlıdır:

  • dragAndDrop - true değerine ayarlanırsa tek noktalı hareket, sürükle ve bırak eylemidir. Bu değer varsayılan olarak false şeklindedir.

Aşağıda, Robo komut dosyası kullanılarak oluşturulan tek noktalı hareket Kullanıcı aşağı kaydırma işlemini gerçekleştirir:

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

İki noktalı hareket yap

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "TWO_POINT_GESTURE" --
coordinates İki noktalı bir hareket için dört koordinat, "(x1;y1)->(x2;y2);(x3;y3)->(x4;y4)" yüzde veya piksel olarak ifade eder.

Aşağıda, iki parmak ucunuzu kullanarak iki parmak ucunuzu uzaklaştıran hareket:

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

IME işlemi gerçekleştirme

Bu işlem, mevcut işlem düğmesine basar. Örneğin, sonraki, bitti ve belirtilen hedef kullanıcı arayüzü widget'ı için Giriş Yöntemi Düzenleyici'de (IME) arama yapın.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "PRESSED_EDITOR_ACTION" --
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak hedef kullanıcı arayüzü widget'ını tanımlar.

Aşağıda, IME işlemi gerçekleştiren Robo komut dosyası işlemi örneği verilmiştir kaynak kimliğine sahip bir kullanıcı arayüzü widget'ında "com.google.samples.apps.topeka:id/first_name":

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

Geri'ye bas

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
eventType Robo komut dosyası işleminin türünü belirtir.
"eventType": "PRESSED_BACK" Cihaza bir KEYCODE_BACK etkinliği gönderir.
"eventType": "PRESSED_BACK_EMULATOR_28" Android Studio'da Robo komut dosyası kaydedicisi tarafından geri tuşuna basmak için kullanılır .

Aşağıda, geri basan Robo komut dosyası işlemine bir örnek verilmiştir:

{
  "eventType": "PRESSED_BACK"
}

Ana sayfaya basın

Bu işlem, cihaza bir KEYCODE_HOME etkinliği gönderir.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "GO_HOME" --

Aşağıda, ana sayfa düğmesine basan Robo komut dosyası işlemine bir örnek verilmiştir:

{
  "eventType": "GO_HOME"
}

Bir öğeyi görünüme kaydırma

Bu işlem, Robo testinin belirtilen ile eşleşen kullanıcı arayüzü widget'ına kadar elementDescriptors belirtilmiş Ekranda childElementDescriptors varsa veya kaydırılan widget veya maksimum 50 kaydırma sınırına ulaşılmıştır.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "ELEMENT_SCROLL_INTO_VIEW" --
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak kaydırılan kullanıcı arayüzü widget'ını tanımlar.
childElementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak kaydırmak için kullanıcı arayüzü widget'ını tanımlar.

Aşağıda, kullanıcı arayüzü widget'ını kaydıran bir Robo komut dosyası işlemi örneği verilmiştir kullanıcı arayüzüne kadar "my.app.package:id/scrollable_card_container" kaynak kimliğiyle ekranda "Orange" metnini içeren bir widget var (veya kaydırma işlemi veya maksimum 50 kaydırma sayısına ulaşıldığından) emin olun:

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

Kaydırma

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "VIEW_SWIPED" --
swipeDirection Kaydırma işleminin yönünü belirtir:
  • Left
  • Right
  • Up
  • Down
  • Forward - Down veya Dikey veya yatay kaydırılabilirliğe bağlı olarak Right widget'ının sonuna geldik.
  • Backward - Up veya Left hedef kullanıcı arayüzünün dikey veya yatay kaydırılabilirliğine bağlı olarak widget'ını tıklayın.
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak hedef kullanıcı arayüzü widget'ını tanımlar.

Aşağıda, bir kullanıcı arayüzü widget'ını yukarı kaydıran Robo komut dosyası işlemine bir örnek verilmiştir "my.app.package:id/custom_content" kaynak kimliğiyle:

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

Ekran görüntüsü al

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "TAKE_SCREENSHOT" --
screenshotName Ekran görüntüsü dosyasının adını belirtir.

Aşağıda, ekran görüntüsü alan Robo komut dosyası işlemine bir örnek verilmiştir:

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

Ekranda bir noktaya dokunun

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "POINT_TAP" --
pointTapXCoordinate Dokunulan noktanın piksel X koordinatı. Şunlarla birlikte dışlayıcı: pointTapXPercent ve pointTapYPercent.
pointTapYCoordinate Dokunulan noktanın piksel Y koordinatı. Şunlarla birlikte dışlayıcı: pointTapXPercent ve pointTapYPercent.
pointTapXPercent Dokunulan noktanın yüzde X koordinatı. Şunlarla birlikte dışlayıcı: pointTapXCoordinate ve pointTapYCoordinate.
pointTapYPercent Dokunulan noktanın Y koordinatı. Şunlarla birlikte dışlayıcı: pointTapXCoordinate ve pointTapYCoordinate.

Aşağıdaki örnek bir Robo komut dosyası işlemidir ve ekran:

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

Bir öğenin içindeki bir noktaya dokunun

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "POINT_TAP_ELEMENT" --
pointTapXPercent Hedef öğedeki X koordinatı.
pointTapYPercent Hedef öğe içindeki Y koordinatı.
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak hedef kullanıcı arayüzü widget'ını tanımlar.

Aşağıda, arama çubuğunun sağa kaydırın:

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

Taramayı sonlandır

Bu işlem Robo testini durdurur.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "TERMINATE_CRAWL" --

Aşağıda, Robo testini durduran Robo komut dosyası işlemine bir örnek verilmiştir:

{
  "eventType": "TERMINATE_CRAWL"
}

Bekle

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "DELAYED_MESSAGE_POSTED" --
delayTime Ne kadar süre bekleneceğini (milisaniye cinsinden) belirtir.

Aşağıda, üç saniye bekleyen bir Robo komut dosyası işlemi örneği verilmiştir: saniye:

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

Bir öğe bekleyin

Bu işlem, Robo testinin bir öğenin ekranda görünmesi için belirtilen zaman aşımı süresi.

Aşağıdaki tabloda gerekli özellikler listelenmiştir:

Özellik Açıklama
"eventType": "WAIT_FOR_ELEMENT" --
delayTime Bekleme zaman aşımını milisaniye cinsinden belirtir.
elementDescriptors Android kullanıcı arayüzü hiyerarşisini kullanarak beklenen kullanıcı arayüzü widget'ını tanımlar.

Aşağıda, 30 dakikaya kadar bekleyen bir Robo komut dosyası işlemi örneği verilmiştir: kaynak kimliğine sahip bir kullanıcı arayüzü widget'ı için saniye Ekranda görünecek "my.app.package:id/confirmation_button":

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

Sonraki adımlar