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
koşullar. 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 olarakfalse
.dismiss_popups
-true
değerine ayarlanırsa Robo test beklenmedik tüm sorunları kapatırstrict
modundayken bile Robo komut dosyası gerçekleştirilirken iletişim kutuları görüntülenir. Bustrict
modunda değilken bu seçeneğin hiçbir etkisi olmaz. Bu ayar varsayılan olarakfalse
notify
-false
olarak ayarlanırsa Robo komut dosyası ekranda görünmüyor bir bildirim almayı tercih edebilir. Varsayılan olaraktrue
.
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 olarakfalse
ş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:
contextDescriptor
özelliği var.- En yüksek
priority
değerine sahiptir (varsayılan olarak tüm Robo komut dosyaları aynı yürütmepriority
/1
). - 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ş:
"Robo script 2"
en yüksek önceliğe sahip olduğu için.- Diğer uygun seçenekler arasında daha önce göründüğü için
"Robo script 1"
Aynı önceliğe sahip Robo komut dosyaları. "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. CEVAP
post_crawl Robo komut dosyası, içinde 15 saniyeyi geçmemelidir
aksi takdirde tarama, zaman aşımına uğrayabilir.
|
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. Belgenin ş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 dosyası; yoksayma, koşullu ve koşulsuz olmak üzere
işlemlerdir. Diğer Robo komut dosyası işlemlerinden farklı olarak
içeren Robo komut dosyasının 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:
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.
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ı kaydedip bunu Test Lab uygulamasında çalıştırın
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 hedefine 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 kullanarak Robo komut dosyası kaydedin.
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 olarakfalse
ş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 olarakfalse
ş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:
|
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: 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"
}
]
}