Pada artikel ini saya ingin berbagi pengalaman saya dalam memecahkan masalah meluncurkan pengujian otomatis aplikasi mobile di Android.
Apa yang akan saya ceritakan:
- Cara menjalankan lingkungan pengujian otomatis menggunakan Appium
(PC OS - Windows 10) - Cara menghindari beberapa kesalahan yang terjadi saat mencoba menjalankan tes dalam aplikasi hybrid
- Beberapa perintah dasar untuk menjalankan tes paling sederhana. Kami akan menggunakan Java dan JavaScript
Tantangan
Mengotomatiskan pengujian aplikasi seluler hybrid.
Tentang aplikasi yang akan diuji:
Mungkin ini adalah poin utama yang mempengaruhi konfigurasi PC untuk menjalankan tes.
Lingkungan uji
Kami akan menggunakan Appium sebagai alat pengujian otomatis.
Singkatnya, ini adalah alat yang memungkinkan Anda untuk menggunakan server untuk mengirim perintah kepada klien apa yang harus dilakukan dan mengapa.
Anda dapat memperoleh informasi lengkap di situs web
pengembang .
Mari kita mulai.
Di tempat yang nyaman bagi Anda di disk, buat folder "Otomatisasi Appium".
Sebagai contoh:
C:\Appium automation
Lebih jauh dalam folder ini (C: \ Appium automation) buat beberapa folder lagi:
Jika ada salah satu aplikasi / komponen yang telah Anda instal, dengan mengikuti instruksi Anda baru saja memahami logika hubungan, mis. tidak perlu menginstal ulang semuanya.
Mengisi folder yang dibuat dan memuat komponen lainnya
1. Java SDK
Ikuti tautan dan klik Unduh:

Selanjutnya, kita masuk ke halaman unduhan untuk berbagai sistem operasi, seperti Saya memiliki Windows 10 x64, pilih:

Setelah mengunduh file, buka dan ekstrak paket .exe-shnik (pilih path saat instalasi) ke folder:
C:\Program Files\Java\jdk-12.0.1
(nomor versi pada saat unduhan dapat bervariasi)2. Android Studio dan Android SDK
Untuk mengunduh,
ikuti tautan .
Pasang di folder:
C:\Appium automation\Android Studio
Selama peluncuran pertama Studio Android, Anda harus
mengonfigurasi program :
- Instal Ketik pilih Custom, klik Next
- Pilih tema yang Anda suka, klik Berikutnya
- Lokasi Android SDK tentukan C: \ Appium automation \ Android SDK, klik Next
- Pengaturan Emulator dapat dibiarkan pada Recommended, klik Next
- Klik Selesai dan tunggu proses instalasi untuk menyelesaikan.
Buat proyek baru di Android Studio:- Klik Mulai proyek Android Studio baru
- Tunjukkan Nama, Path ke proyek Anda, atau Anda tidak dapat mengubah apa pun dan meninggalkan yang diusulkan, klik Next
- Di daftar turun bawah Ponsel dan Tablet, pilih “API 23: Android 6.0 (Marshmallow), klik Berikutnya
- Pilih Aktivitas Kosong, klik Selanjutnya
- Klik Selanjutnya
- Klik Selesai
Instal Alat SDKDi Android Studio, pilih Alat - SDK Manager.
Di jendela yang muncul, bagian Android SDK akan dipilih.

Pada tab Platform SDK, pilih versi Android tempat Anda akan melakukan pengujian.
Dan, pada Alat SDK, pilih item:
- Android SDK Build-Tools
- Android Emulator
- Android SDK Platform-Tools
- Alat Android SDK
- Dokumentasi untuk Android SDK
- Mendukung repositori
Klik Terapkan atau Oke dan tunggu pengunduhan dan pemasangan komponen selesai.

3. Buat variabel PATH
Klik kanan pada "My Computer" - "Properties" - "Advanced System Settings".
Di jendela yang terbuka, pada tab "Advanced", pilih "Variabel lingkungan ..."
Di blok "Variabel Sistem", buat variabel baru.

Variabel pertamaNama Variabel - JAVA_HOME
Nilai variabelnya adalah
C:\Program Files\Java\jdk-12.0.1
(jalur tempat Anda menginstal jdk pada langkah 1, dalam beberapa kasus mungkin folder Program Files akan disebut Program Files (x86))
Variabel keduaNama Variabel - ANDROID_HOME
Nilai variabelnya adalah
C:\Appium automation\Android SDK
Tambahan Variabel PathTemukan variabel Path dalam daftar variabel sistem dan klik "Ubah ...".
Klik "Buat" di jendela yang muncul dan tambahkan variabel:
- % ANDROID_HOME% \ emulator
- % ANDROID_HOME% \ platform-tools
- % ANDROID_HOME% \ alat
- % ANDROID_HOME% \ tools \ bin
Akibatnya, Anda harus mendapatkan 4 variabel baru, setelah itu Anda harus mengklik Ok.

4. Appium
Unduh Appium:- Kami mengikuti tautan http://appium.io/
- Klik Unduh
- Kami memilih Appium-windows-1.13.0.exe (nomor versi pada saat memuat mungkin bervariasi)

Jalankan file .exe yang diunduh dan instal Appium di PC Anda. Selama proses instalasi, Anda hanya perlu memilih untuk menginstal secara global atau ke pengguna tertentu. Saya menginstal secara global sejak itu itu tidak masalah bagi saya.
Mengunduh pustaka Appium:
Pindahkan file .jar yang diunduh ke folder
C:\Appium automation\Appium Lib

Pindahkan file .jar yang diunduh ke folder:
C:\Appium automation\Appium Lib

Pindahkan file .jar yang diunduh ke folder:
C:\Appium automation\Appium Lib
Unduh perpustakaan Selenium:
Buka paket arsip yang diunduh ke folder:
C:\Appium automation\Selenium Lib
5. Edisi Komunitas IntelliJ IDEA
Untuk mengunduh, buka tautan
https://www.jetbrains.com/idea/downloadDekat versi Komunitas dan klik Unduh (ini adalah versi gratis, tetapi cukup untuk tes otomatis).
Halaman unduhan memiliki perbandingan versi Komunitas dan Ultimate.
Jika Anda memiliki keinginan untuk membeli versi Ultimate, Anda dapat melakukannya dengan aman! Tetapi, sekali lagi, versi Komunitas sudah cukup.
Jalankan file .exe yang diunduh dan instal (klik Berikutnya hingga program mulai menginstal)
Peluncuran IntelliJ IDEA Pertama- Pilih “Jangan impor pengaturan”
- Kami menerima perjanjian lisensi
- Pilih topik
- Klik Selanjutnya
- Klik Mulai menggunakan IntelliJ IDEA
Membuat proyek di IntelliJ IDEA- Pilih Buat Proyek Baru
- Tentukan path ke Java SDK
- Klik Baru ...
- Tentukan path ke Java SDK C yang dimuat sebelumnya: \ Program Files \ Java \ jdk-12.0.1
- Klik Selanjutnya
- Centang kotak "Buat proyek dari template"
- Klik Selanjutnya
- Tentukan nama proyek dan lokasi yang akan disimpan
- Klik Selesai
Pengaturan untuk proyek yang dibuatPilih File - Struktur Proyek ...
Di jendela yang muncul, pilih Modul - Dependensi - “+” - JAR atau direktori ...

Dan kami menambahkan ke proyek semua pustaka yang dimuat sebelumnya.

Klik OK.
Sekarang proyek siap untuk menjalankan tes.
6. Pengaturan perangkat Android
Perangkat nyataAnda memerlukan kabel USB untuk menghubungkan perangkat ke komputer dan smartphone itu sendiri.
Untuk memulai, buka "Pengaturan" - "Tentang ponsel" di telepon pintar.
Lebih lanjut, pada smartphone yang berbeda, semuanya berbeda, tetapi intinya adalah, Anda perlu menemukan "Nomor seri" dan mengkliknya 5-7 kali sampai pemanggang muncul bahwa "Anda sekarang adalah pengembang" (teks pemberitahuan mungkin berbeda dari model ke model)
Setelah manipulasi ini, bagian "Untuk Pengembang" akan muncul di pengaturan ponsel Anda. Itu juga dapat bersembunyi dari model ke model di bagian yang berbeda, misalnya, di suatu tempat di "Pengaturan" - "Untuk Pengembang", dan di suatu tempat "Pengaturan" - "Fitur Khusus" - "Untuk Pengembang", dll. .
Anda harus pergi ke bagian "Untuk Pengembang" dan mengaktifkan "USB Debugging".
Saat Anda menghubungkan ponsel cerdas Anda melalui USB, Anda akan melihat pesan tentang izin debugging USB, Anda dapat memeriksa “Percayai perangkat ini” dan klik “OK”, maka pesan ini tidak akan muncul lagi saat berikutnya ponsel terhubung ke PC ini.
Semua ponsel cerdas Anda siap bekerja dalam pengujian otomatis.
Perangkat virtualAnda juga dapat membuat perangkat virtual melalui Android Studio, maka Anda tidak perlu menghubungkan perangkat nyata ke komputer.
Tetapi pada perangkat virtual, tes dapat bekerja lebih lambat daripada yang nyata.
Untuk membuatnya, buka Android Studio, lalu:
- "Alat" - "AVD Manager" - "+ Buat Perangkat Virtual ..."
- Pilih perangkat, klik Berikutnya
- Pilih versi Android yang diinginkan, klik Next
- Tentukan nama perangkat, klik Selesai
Setelah manipulasi yang dilakukan di bagian "Alat" - "Manajer AVD" Anda akan melihat perangkat yang dibuat. Dengan menggunakan ikon "Play" berwarna hijau, Anda dapat memulai perangkat.
Bagaimana cara memeriksa apakah PC Anda melihat perangkat yang terhubung?Jalankan baris perintah ("Mulai" - "Utilitas - Windows" - "Prompt Perintah")
Dan masukkan perintah adb devices.
Akibatnya, jika perangkat terhubung dengan fungsi "USB Debugging" diaktifkan, Anda akan menerima perangkat yang terhubung dan UDID-nya (nomor seri):
List of devices attached UDID device
7. Kami sedang menulis proyek
Tambahkan impor. package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit;
Kami mendaftarkan server dan ke mana ia harus mengirim permintaanInstal Driver Android:
AndroidDriver<AndroidElement> driver = null;
Kami mengatur parameter (properti):
DesiredCapabilities capabilities = new DesiredCapabilities();
Nama perangkat (Anda dapat menemukannya untuk perangkat nyata di "Pengaturan" - "Tentang Telepon", dan untuk "Alat" virtual - "AVD Manager" - bidang "Nama"):
capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone");
Tautan ke APK yang harus diluncurkan (.apk harus merupakan versi debug agar Anda dan appium dapat memeriksa aplikasi):
capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-Apk.apk");
Luncurkan Driver Appium:
try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); }
Kode ini akan cukup untuk meluncurkan aplikasi Anda pada perangkat yang terhubung.
Tim tambahanUntuk menunda proyek untuk waktu tertentu, misalnya 8 detik. (nilai ditunjukkan dalam milidetik). Mungkin perlu jika Anda harus menunggu halaman atau aplikasi memuat:
Thread.sleep(8000);
Kami mendapatkan ContextHandles, tempat kami memahami apa yang kami kerjakan sekarang (NATIVE_APP atau WEBVIEW):
Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); }
Tetapkan Konteks untuk nilai terakhir yang diterima dalam array. Ini akan memungkinkan Anda untuk beralih dengan benar ke WEBVIEW, tk. Konteks default = NATIVE_APP:
driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]);
Kami mengontrol antarmuka aplikasiKarena kami bekerja dengan aplikasi hybrid, mis. elemen aplikasi diberikan dalam WEBVIEW, dan bukan di NATIVE_APP, maka paling sering kita harus menggunakan satu jenis pencarian untuk elemen findElementByCssSelector.
Klik pada tombol OK:
driver.findElementByCssSelector(".button-ok").click();
- dimana .button-ok adalah kelas elemen. Anda juga dapat menggunakan ID elemen dengan tepat.
Kami mengirim nilai di bidang, misalnya, Anda memiliki pencarian dan Anda ingin mengirim nilai "Bioskop" di sana.
driver.findElementByCssSelector(".search-input").sendKeys("");
Klik untuk menemukan:
driver.findElementByCssSelector(".search-button").click();
Dengan cara ini, Anda sudah bisa mengendalikan aplikasi Anda.
Cepat atau lambat, Anda akan menemukan itu, tidak semua konten ditempatkan di layar smartphone, mis. Anda perlu menggulir. Jika suatu elemen tidak terlihat di layar selama proses pengujian, Appium akan membuat kesalahan bahwa elemen itu tidak melihat elemen dan kemungkinan besar semua pengujian lebih lanjut akan ditutupi dengan kesalahan.
Untuk menggulir layar, Anda dapat menjalankan fungsi JS scrollIntoView di Java.
((JavascriptExecutor) driver).executeScript("document.querySelector('.button-ok').scrollIntoView({block: \"end\", behavior: \"smooth\"});");
Dalam kasus saya, ini akan memungkinkan Anda untuk turun ke tombol OK.
Mungkin ini adalah insiden dimana Anda menulis semuanya dengan benar, tetapi pengguliran tidak dilakukan.
Cobalah untuk mengikat elemen-elemen lain di layar dan pertama-tama lebih baik melakukannya melalui konsol di Chrome - Inspect, jadi Anda dijamin mengerti bahwa ketika Anda mengikat elemen ini, gulir akan berfungsi.
Anda dapat pergi ke langkah 8 dan jika semuanya bekerja untuk Anda, maka ini hebat!
Tapi saya punya perangkap lain.
Namanya adalah Crosswalk Browser.
Ketika saya memulai proyek, saya selalu mendapat kesalahan:
“Make sure the app has its webview configured for debugging”
Ini berarti tidak ada satu tes pun yang tidak dilakukan.
Apa yang perlu Anda periksa dalam hal ini:
- pastikan Anda memiliki build debug
- pastikan debug build memungkinkan Inspect-a application
- pasang fixed chromedriver
Setelah manipulasi ini, tambahkan kemampuan lain ke proyek Anda.
capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe");
- di mana C: \\ node_modules \\ appium-with-crosswalk-fix \\ chromedriver \\ 2.28 \\ chromedriver.exe
ini adalah cara untuk memperbaiki chromedriver
Jadi proyek Anda akan terlihat seperti ini: package name; import java.util.*; import io.appium.java_client.android.AndroidDriver; import io.appium.java_client.android.AndroidElement; import io.appium.java_client.remote.MobileCapabilityType; import org.openqa.selenium.*; import org.openqa.selenium.remote.DesiredCapabilities; import org.openqa.selenium.JavascriptExecutor; import java.net.MalformedURLException; import java.net.URL; import java.util.concurrent.TimeUnit; public class Main { public static void main(String[] args) throws InterruptedException { AndroidDriver<AndroidElement> driver = null; DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability(MobileCapabilityType.DEVICE_NAME, "MyPhone"); capabilities.setCapability(MobileCapabilityType.APP, "C:\\Appium automation\\APK\\My-debug-apk.apk"); capabilities.setCapability("chromedriverExecutable", "C:\\node_modules\\appium-with-crosswalk-fix\\chromedriver\\2.28\\chromedriver.exe"); try { driver = new AndroidDriver<>(new URL("http://127.0.0.1:4723/wd/hub"), capabilities); driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS); } catch (MalformedURLException e) { System.out.println(e.getMessage()); } Set<String> contextNames = driver.getContextHandles(); for (String contextName : contextNames) { System.out.println(contextName); } driver.context((String) contextNames.toArray()[contextNames.toArray().length - 1]); Thread.sleep(8000); driver.findElementByCssSelector(".search-input").sendKeys(""); driver.findElementByCssSelector(".search-button").click(); }
Proyek semacam itu:
- Instal aplikasi Anda di perangkat.
- Temukan bidang pencarian di halaman aplikasi
- Akan membawa ke sana arti "Bioskop"
- Klik pada tombol "Cari"
8. Kami memulai proyek
Ada beberapa poin utama untuk memulai suatu proyek:
- Luncurkan server Appium (item 4)
- Gunakan pintasan untuk meluncurkan Appium
- Klik "Mulai server"
- Hubungkan perangkat ke PC atau luncurkan perangkat virtual (item 6)
- Buat proyek (p. 5 dan 7)
- Klik Jalankan (atau pada bilah alat IntelliJ IDEA, atau Jalankan - Jalankan 'Main')
- Selamat menikmati hasilnya
Nah, maka Anda bebas untuk menguji pengaturan, informasi yang diperlukan ada di situs web resmi
pengembang .
Appium juga dapat digunakan untuk menguji aplikasi iOS.
Saya ingin menulis sebentar, tetapi ternyata seperti biasa.
Terima kasih kepada semua orang yang membaca sampai akhir, semoga bermanfaat bagi Anda!