Menyiapkan pengujian otomatis aplikasi hybrid

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:
PlatformAndroid
Kerangka kerjaAngular, Cordova, Ionik
BrowserCrosswalk

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:
Android SDKC: \ Appium automation \ Android SDK
Android StudioC: \ Appium automation \ Android Studio
APKC: \ Appium automation \ APK
Appium libC: \ Appium automation \ Appium Lib
Lib seleniumC: \ Appium automation \ Selenium Lib

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 SDK

Di 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 pertama

Nama 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 kedua

Nama Variabel - ANDROID_HOME

Nilai variabelnya adalah

 C:\Appium automation\Android SDK 

Tambahan Variabel Path

Temukan 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/download
Dekat 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 dibuat

Pilih 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 nyata
Anda 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 virtual

Anda 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 permintaan

Instal 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 tambahan

Untuk 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 aplikasi

Karena 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:


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!

Source: https://habr.com/ru/post/id452742/


All Articles