Ini adalah pengikatan bahasa Java untuk menulis Tes Appium yang sesuai dengan Protokol WebDriver
Sejak v9 klien hanya mendukung Java 11 ke atas. Ikuti Panduan Migrasi v8 ke v9 untuk menyederhanakan proses migrasi.
Sejak versi 8 Appium Java Client mengalami beberapa perubahan besar, yang mungkin memerlukan pembaruan kode klien Anda. Pastikan untuk mengikuti Panduan Migrasi v7 ke v8 untuk menyederhanakan proses migrasi.
Tambahkan yang berikut ini ke pom.xml:
< dependency >
< groupId >io.appium groupId >
< artifactId >java-client artifactId >
< version >${version.you.require} version >
< scope >test scope >
dependency >
Tambahkan yang berikut ke build.gradle:
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
Proyek klien Java tersedia untuk digunakan bahkan sebelum dipublikasikan secara resmi ke Maven Central. Lihat jitpack.io
Tambahkan yang berikut ini ke pom.xml:
< repositories >
< repository >
< id >jitpack.io id >
< url >https://jitpack.io url >
repository >
repositories >
Tambahkan ketergantungan:
< dependency >
< groupId >com.github.appium groupId >
< artifactId >java-client artifactId >
< version >latest commit ID from master branch version >
dependency >
Tambahkan repositori JitPack ke file build Anda. Tambahkan ke root build.gradle Anda di akhir repositori:
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
Tambahkan ketergantungan:
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
Klien Appium Java | Klien selenium |
---|---|
9.2.1 (masalah umum: #2145, #2146), 9.2.2 , 9.2.3 , 9.3.0 | 4.19.0 , 4.19.1 , 4.20.0 , 4.21.0 , 4.22.0 , 4.23.0 |
9.1.0 , 9.2.0 | 4.17.0 , 4.18.0 , 4.18.1 |
9.0.0 | 4.14.1 , 4.15.0 , 4.16.0 (rusak sebagian), 4.16.1 |
T/A | 4.14.0 |
8.5.0 , 8.5.1 , 8.6.0 | 4.9.1 , 4.10.0 , 4.11.0 , 4.12.0 , 4.12.1 (masalah umum: #2004), 4.13.0 |
8.4.0 | 4.8.2 , 4.8.3 , 4.9.0 |
8.3.0 | 4.7.0 , 4.7.1 , 4.7.2 , 4.8.0 , 4.8.1 |
8.2.1 | 4.5.0 , 4.5.1 , 4.5.2 , 4.5.3 , 4.6.0 |
Klien Selenium tidak mengikuti Versi Semantik, jadi perubahan yang dapat menyebabkan gangguan mungkin terjadi bahkan dalam patch, yang mengharuskan tim Appium memperbarui klien Java sebagai respons.
Klien Appium Java mendeklarasikan dependensi Selenium menggunakan rentang versi terbuka yang ditangani secara berbeda oleh alat pembangunan yang berbeda. Terkadang pengguna mungkin ingin menyematkan dependensi Selenium bekas karena berbagai alasan. Ikuti artikel Manajemen Ketergantungan Transitif untuk informasi selengkapnya tentang membuat versi Selenium tetap untuk kerangka pengujian Java Anda.
Klien Appium java memiliki kelas khusus untuk mendukung driver Appium berikut:
Untuk mengotomatiskan platform lain yang tidak tercantum di atas, Anda dapat menggunakan AppiumDriver atau turunannya yang khusus.
Klien Appium java dibangun di atas Selenium dan mengimplementasikan antarmuka yang sama dengan fondasi RemoteWebDriver. Namun, Selenium lib sebagian besar berfokus pada otomatisasi browser web sementara Appium bersifat universal dan mencakup berbagai kemungkinan platform, misalnya sistem operasi seluler dan desktop, perangkat IOT, dll. Dengan demikian, fondasi kelas AppiumDriver
dalam paket ini memperluas RemoteWebDriver
dengan fitur tambahan , dan membuatnya lebih fleksibel, sehingga tidak terlalu terfokus pada operasi yang terkait dengan browser web.
Klien Appium java menyediakan kelas khusus untuk mengontrol eksekusi server Appium. Kelasnya adalah AppiumDriverLocalService. Ini memungkinkan untuk menjalankan dan memverifikasi server Appium secara lokal dari kode kerangka pengujian Anda dan menyediakan beberapa pintasan yang mudah digunakan. Layanan ini dapat digunakan seperti di bawah ini:
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
Anda dapat menyesuaikan perilaku layanan, misalnya, memberikan argumen baris perintah khusus atau mengubah jalur ke server yang dapat dieksekusi menggunakan AppiumServiceBuilder
Catatan
AppiumDriverLocalService tidak mendukung manajemen server pada host non-lokal
UiAutomator2Options options = new UiAutomator2Options ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.apk" );
AndroidDriver driver = new AndroidDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . xpath ( "//Button" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
XCUITestOptions options = new XCUITestOptions ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.ipa" );
IOSDriver driver = new IOSDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . accessibilityId ( "myId" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
BaseOptions options = new BaseOptions ()
. setPlatformName ( "myplatform" )
. setAutomationName ( "mydriver" )
. amend ( "mycapability1" , "capvalue1" )
. amend ( "mycapability2" , "capvalue2" );
AppiumDriver driver = new AppiumDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . className ( "myClass" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
Periksa README driver yang sesuai untuk mengetahui daftar kemampuan dan fitur yang didukungnya.
Anda dapat menemukan lebih banyak contoh kode dengan memeriksa unit klien dan pengujian integrasi.
Klien Appium Java menggunakan akses reflektif ke anggota pribadi modul lain untuk memastikan fungsionalitas yang tepat dari beberapa fitur, seperti model Objek Halaman. Jika Anda mendapatkan pengecualian waktu proses dan InaccessibleObjectException
ada di pelacakan tumpukan dan waktu proses Java Anda berada pada versi 16 atau lebih tinggi, pertimbangkan tutorial Oracle berikut dan/atau periksa masalah yang ada untuk kemungkinan solusinya. Idenya adalah untuk secara eksplisit mengizinkan akses untuk modul tertentu menggunakan argumen baris perintah --add-exports/--add-opens
.
Solusi lain yang mungkin, namun kurang disarankan, adalah menurunkan versi Java ke versi 15 atau lebih rendah.
Masalah seperti ini biasanya terjadi ketika server Appium dimulai langsung dari kode kerangka kerja Anda, bukan dijalankan secara terpisah dengan skrip atau secara manual. Tergantung pada cara proses server dimulai, mungkin atau mungkin tidak mewarisi lingkungan shell yang sedang aktif. Itulah sebabnya Anda mungkin masih menerima kesalahan tentang keberadaan variabel meskipun variabel-variabel ini ditentukan untuk penerjemah baris perintah Anda. Sekali lagi, tidak ada solusi universal untuk hal tersebut, karena ada banyak cara untuk menjalankan proses server baru. Pertimbangkan untuk memeriksa dokumen Pemecahan Masalah Lingkungan Appium untuk informasi lebih lanjut tentang cara melakukan debug dan memperbaiki masalah lingkungan proses.
Kunjungi CHANGELOG.md untuk melihat daftar lengkap perubahan antar versi.
Jalankan tes menggunakan
gradle clean -Dtest.single=IOSAlertTest tes