Saya dari Luxoft.
Kata pengantar dari pos :
Selenoid adalah program yang memungkinkan Anda untuk mengontrol browser dan emulator Android menggunakan driver khusus. Mampu menjalankan masing-masing secara terpisah dalam wadah Docker.
Ide utama Selenoid adalah meluncurkan wadah baru untuk setiap sesi (meluncurkan browser atau emulator baru) dan menghentikannya segera setelah menutup sesi.
Selenoid memungkinkan Anda mempertahankan beban tinggi tanpa biaya sumber daya tambahan.
Posting ini akan meluncurkan tes sederhana di emulator Android .
Persiapan
Periksa dulu apakah sistem Anda dapat menjalankan mesin virtual.
Virtualisasi perangkat keras harus didukung oleh prosesor Anda. Ini berarti bahwa ekstensi prosesor IntelVT atau AMDV diperlukan. Untuk memverifikasi bahwa prosesor mendukung salah satunya, jalankan perintah:
egrep '(vmx|svm)' /proc/cpuinfo
Docker
Docker harus diinstal dan dijalankan pada sistem operasi Anda.
Instal Selenoid
Jika Anda memiliki sistem operasi berbasis Redhat, Anda dapat menggunakan repositori saya untuk menginstal manajer Konfigurasi .
yum -y install yum-plugin-copr yum copr enable antonpatsev/aerokube-cm-rpm yum -y install aerokube-cm
Jika Anda tidak memiliki sistem operasi berbasis Redhat, maka Anda dapat mengunduh dan menggunakan biner manajer Konfigurasi .
Jika Anda tidak memiliki akses langsung ke Internet dan gambar buruh pelabuhan yang Anda unduh melalui registri:
aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m" --registry -docker-registry
Jika Anda memiliki akses langsung ke Internet.
aerokube-cm selenoid start --force --browsers "android:6.0;chrome:78" --args "-session-attempt-timeout 2m -service-startup-timeout 2m"
Kunci --args "-session-attempt-timeout 2m -service-startup-timeout 2m"
diperlukan jika Anda memiliki apk besar yang diinstal untuk waktu yang lama.
--force
menimpa file browsers.json
Karena Selenoid Configuration manager belum tahu cara mengkonfigurasi browser.json untuk mobile Chrome, Anda harus memperbaikinya sendiri.
Secara default, browsers.json dihasilkan di direktori ~ / .aerokube / selenoid.
File browsers.json yang dihasilkan untuk menguji aplikasi Android dan Chrome di dalam emulator Android.
{ "android": { "default": "6.0", "versions": { "6.0": { "image": "docker-registry:443/selenoid/android:6.0", "port": "4444", "path": "/wd/hub" } } }, "chrome": { "default": "mobile-75.0", "versions": { "mobile-75.0": { "image": "docker-registry:443/selenoid/chrome-mobile:75.0", "port": "4444", "path": "/wd/hub" } } } }
Sejauh ini, versi mobile chrome berada di belakang versi chrome biasa.
Unduh gambar chrome ponsel
docker pull selenoid/chrome-mobile:75.0
Mengubah browsers.json
Saat mengubah file browsers.json, selenoid perlu dimuat ulang
aerokube-cm selenoid stop
aerokube-cm selenoid start
Reload konfigurasi
Anda dapat melakukan konfigurasi Reload. Detail tentang tautan:
https://aerokube.com/selenoid/latest/#_reloading_configuration
Pastikan wadah buruh pelabuhan sudah mulai dan gambar sudah diunduh.
docker ps docker images

Menjalankan UI Selenoid menggunakan Manajer konfigurasi
aerokube-cm selenoid-ui start --registry https://docker-registry
Atau
aerokube-cm selenoid-ui start
Pastikan wadah buruh pelabuhan sudah mulai dan gambar sudah diunduh.
docker ps docker images

Pergi ke selenoid-ui di ip-where-you-ran-selenoid-and-selenoid-ui: 8080
Anda harus memiliki 2 lampu TERHUBUNG hijau dan ditulis dalam android dan chrome.

Untuk mengakses Android dari sistem host, tambahkan baris berikut ke file / etc / hosts:
ip-- hypervisor
Tes demo
Unduh https://github.com/aerokube/demo-tests
Di ketiga file java, ubah jalur di RemoteWebDriver ke hypervisor (Anda perlu mengubah tangkapan layar).

atau ke alamat lain tempat Anda memulai selenoid.
Dalam file AndroidRemoteApkTest.java, ubah jalur tempat Anda dapat mengunduh APK.
device.setCapability("app", "http://ci.example.com/game2048.apk");
pada
device.setCapability ("app", " http: // tautan-ke-apk-Anda ");
atau
device.setCapability("app", "http://hypervisor:8000/game2048.apk");
Jika Anda merujuk ke localhost dari buruh pelabuhan, maka Anda akan mendapatkan kesalahan ini, karena Anda mencoba mengakses localhost dari server utama dari jaringan buruh pelabuhan:
Tests in error: browserTest(com.aerokube.selenoid.AndroidRemoteApkTest): An unknown server-side error occurred while processing the command. Original error: Problem downloading app from url http://localhost:8000/apk/game2048.apk: connect ECONNREFUSED 127.0.0.1:8000
Cara membuat tersedia untuk mengunduh file lokal Anda akan lebih rendah.
Dalam file DemoTest.java tambahkan setCapability untuk menjalankan chrome di Android untuk mendapatkan sesuatu seperti ini.

Di setiap file java, Anda dapat mengaktifkan atau menonaktifkan rekaman video, melihat jarak jauh atau manajemen melalui VNC, dan masuk ke file. Untuk menonaktifkan opsi, Anda perlu menambahkan 2 garis miring di awal baris.

Untuk membuat file dari direktori saat ini tersedia untuk diunduh, Anda dapat menjalankan layanan static-server-in-dir di konsol saat ini:
yum -y install yum-plugin-copr yum copr enable antonpatsev/static-server-in-dir yum -y install static-server-in-dir cd to directory static-server-in-dir start 8000 static-server-in-dir stop
Menjalankan tes
Di direktori demo-test, jalankan tes:
Jika Anda perlu menentukan pengaturan dan Anda menggunakan proxy pakar (Nexus, Artifactory)
mvn -s settings.xml clean test
Jika kita jalankan dengan akses langsung ke Internet dan tanpa pengaturan apa pun
mvn clean test
Kecepatan
Total waktu penyebaran emulator android dan peluncuran 1 tes membutuhkan waktu kurang dari 1 menit.
Bug yang dikenal
https://github.com/aerokube/demo-tests/issues/5
Rekam Uji
AndroidDemoTest.java:
AndroidRemoteApkTest.java:
DemoTest.java:
Cari lokasi yang diinginkan dalam aplikasi seluler menggunakan Appium
Appium adalah alat lintas platform, mis. memungkinkan Anda untuk menulis tes untuk platform seluler (iOS, Android, Windows) menggunakan API. Ini adalah salah satu alat yang paling banyak digunakan untuk aplikasi pengujian regresi pada ponsel cerdas dan tablet.
Unduh dan jalankan Appium
Buka File
-> New Session Window

Di bidang Remote host
, tentukan alamat server tempat Selenoid dijalankan.
Di bidang Remote Port
, tentukan port tempat Selenoid berjalan - biasanya 4444.
Di bidang Remote Path
, tentukan /wd/hub
Di Desired Capabiliting
tentukan Capabilities
Anda butuhkan.
JSON minimum adalah ini:
{ "browserName": "chrome", "browserVersion": "mobile-75.0", "enableVNC": true }
Setelah awal sesi Anda akan memiliki gambar ini:

Sekarang Anda dapat menjelajahi / mencari lokasi yang Anda butuhkan.

Obrolan telegram:
https://t.me/aerokube - chat Aerokube
https://t.me/atinfo_chat - mengobrol untuk insinyur otomasi pengujian