Appium Soovitud võimalused Android Emulator
⚡ Nutikas kokkuvõte
Soovitud võimed on võtme-väärtuse paarid ja Appium klient saadab seansi avamisel teate, millise platvormi, seadme, draiveri ja rakenduse suhtes peaks automatiseeritud test käivituma.
Mis on soovitud võimalused
„Soovitud võimalused” aitavad meil automatiseerimise ajal serveri käitumist muuta. Appium see on räsikaart ehk võtme-väärtuse paar, mida kasutatakse käsu saatmiseks Appium server, kus iga kliendikäsk käivitatakse seansi kontekstis.
Näiteks saadab klient serverile POST /session päringu, mis sisaldab JSON-objekti. Appium server.
Seega päringu saatmiseks või serveriga seansi hoidmiseks kasutatakse võtme- ja väärtusepaaride komplekti. Seda nimetatakse soovitud võimeteks.
import io.appium.java_client.AppiumDriver; import org.openqa.selenium.remote.DesiredCapabilities; { DesiredCapabilities capabilities = new DesiredCapabilities(); capabilities.setCapability("deviceName","Android Emulator"); capabilities.setCapability("platformVersion", "4.4"); }
Soovitud võimekuse oluline roll
- „Soovitud võimed” aitavad kasutajal serveriga seansipäringut juhtida. Näiteks iOS-i seansi jaoks määrame võimekuseks platformName = iOS ja Android seansi platvormiNimi = Android.
- Näiteks „DesiredCapabilities” abil seadistatakse WebDriveri eksemplar. FirefoxDraiver, ChromeDriver või InternetExplorerDriver.
- DesiredCapability on väga kasulik Selenium Ruudustik. Näiteks kasutatakse seda erinevate testide käivitamiseks erinevas brauseris ja operatsioonisüsteemis. Sõltuvalt deklareeritud võimekusest osutab Ruudustiku keskus vastavale sõlmele. Sõlmed defineeritakse atribuudimeetodite 'set' abil:
DesiredCapabilities obj = new DesiredCapabilities(); obj.setBrowserName("firefox"); obj.setVersion("18.0.1"); obj.setPlatform(org.openqa.selenium.Platform.WINDOWS);
- Soovitud võimekus on teegipõhine pakett. Enne 'DesiredCapabilities' kasutamist tuleks see allolevast teegist importida.
Org.openqa.selenium.remote.DesiredCapabilities
Appium toetab mõlemat Android ja iOS-is, seega on olemas eraldi komplekt Appium iga platvormi serverivõimalused.
Allolev tabel näitab mõningaid levinumaid Android võimed ja kasutatavad väärtused.
| Võimed | Kirjeldus | Väärtused/Kasutusalad |
|---|---|---|
| rakenduse pakett | Helista soovitud Java pakkida sisse Android mida kasutaja soovib käivitada |
Väärtus= com.example.myapp/ Obj.setCapability("appPackage", "com.whatsapp"); |
| rakendustegevus | Rakenduse tegevus, mida kasutaja soovib paketist käivitada. |
Väärtus= MainActivity, .Settings Obj.setCapability("appActivity", "com.whatsapp.Main"); |
| appWaitPackage | Pakett, mida rakendus peab ootama | Value=com.example.android.myapp |
| appWaitActivity | mistahes Android tegevus, mida kasutaja peab ootama |
Väärtus = SplashActivity capabilities.setCapability(“appWaitActivity”, “com.example.game.SplashActivity”) |
MÄRKUS: vaadake Appium dokumentatsioon et rohkem vaadata Android võimeid.
Allolev tabel näitab mõningaid iOS-i levinumaid funktsioone ja nende väärtusi.
| Võimed | Kirjeldus | Väärtused |
|---|---|---|
| LaunchTimeout | Mõõteriistade ootamise aeg kokku (ms). | 2000 |
| UID | Ühendatud füüsilise seadme unikaalse seadmenumbri tuvastamiseks | 166aestu4 |
MÄRKUS: vaadake Appium võimete juhend et näha rohkem iOS-i võimalusi.
Kuidas soovitud võimed muutusid Appium 2
Ülaltoodud näited pärinevad Appium 1 ajastu ja näitavad endiselt võimete komplekti kuju, kuid kaks reeglit on muutunud ja mõlemad peatavad tänapäevase seansi alustamise.
Esiteks defineerib W3C WebDriveri spetsifikatsioon vaid väikese hulga standardseid võimeid, millest platformName ja browserName siin oluline. Kõik muud funktsioonid on tarnija laiendused ja neil peab olema kooloniga lõppev nimeruumi eesliide. Appiumeesliide on appium:. Nii deviceName muutub appium:deviceName ja platformVersion muutub appium:platformVersion. Appium 2 nõuab ka appium:automationName, kuna draiverid installitakse eraldi, mitte ei ole serveriga komplekteeritud.
Teiseks, eesliite kordamine muutub tüütuks, seega Appium võtab vastu ühe appium:options võimekus, mille väärtus on objekt. Selle objekti sees olevad võimed ei vaja eesliidet ja kui nimi esineb nii objekti sees kui ka väljaspool, on sisemine väärtus ülimuslik.
{
"platformName": "iOS",
"appium:options": {
"automationName": "XCUITest",
"platformVersion": "16.0",
"app": "/path/to/your.app",
"deviceName": "iPhone 12",
"noReset": true
}
}
⚠️ Versiooni märkus: kohta Java poolel Selenium 4 ja Appium Java klient 8 aegunud DesiredCapabilities klass varem näidatud. Draiveripõhised konstruktorid päritud BaseOptions asenda see — UiAutomator2Options eest Android ja XCUITestOptions iOS-i jaoks – üks-ühele kaardigaping igast vanast setCapability kõne. Ülaltoodud algset koodi on siin kasutatud ajaloolise näitena.
ExtracPakettide ja tegevuste teave
Paketid on komplekteeritud failid või klassid. Need annavad modulaarsele programmeerimisele organiseeritud struktuuri. Java, salvestatakse erinevad paketid ühte JAR-faili ja kasutaja saab seda JAR-faili täielikuks täitmiseks kutsuda. Sarnast kontseptsiooni järgitakse ka mobiilirakenduste arendamisel.
aasta Android operatsioonisüsteemis installitakse kõik rakendused kujul Java pakette. Seega, näitekstracpaketi teekonna teave, Android Kasutatakse PackageManager klassi.
See hangib seadmesse eelinstallitud ja järelinstallitud rakenduste paketi- ja tegevusteavet.
PackageManageri klassi eksemplari saab hankida funktsiooni getPackageManager() abil. See meetod pääseb juurde installitud rakenduste pakettidele ja nendega seotud õigustele ning saab neid muuta.
Näiteks:
PackageManager pManager = getPackageManager();
List<ApplicationInfo> list = pManager.getInstalledApplications(PackageManager.GET_META_DATA)
Kuidas leida appPackage'i ja appActivity't ADB abil
Ülaltoodud PackageManageri marsruut töötab rakenduse seest. Testijana on teil tavaliselt ainult installitud järk, seega on kiirem tee päring üle Adb ühendatud seadme või emulaatori vastu.
Avage rakendus seadmes käsitsi ja seejärel käivitage terminalis platvormi tööriistade kaustas üks allolevatest käskudest. Käsk prindib hetkel fookuses oleva akna ja väärtus vormindatakse järgmiselt: package/activity.
adb shell dumpsys window | find "mCurrentFocus" adb shell dumpsys window windows | grep -i "mCurrentFocus"
Kasutage esimest vormi Windows käsurealt ja teine Unixi kestas või Git Bashis. Loe tulemust kahe poolena: kõik kaldkriipsu ees olev on väärtus appPackageja kõik pärast seda olev on väärtus appActivity.
Kehtib kaks hoiatust. Fookuses olev tegevus on see, mis sel hetkel ekraanil on, ja see ei pruugi alati olla tegevus, millega rakendus alustab – kui draiveri initsialiseerimise ajal seanss ebaõnnestub, käivitage rakendus uuesti ja lugege väärtus uuesti. Ja kui esmalt ilmub avakuva, erineb sisestatud tegevus sellest, millele te lõpuks soovite väidet esitada, mis on täpselt nii. appWaitActivity eksisteerib.
Visuaalne alternatiiv on uiautomatorviewer, mis jäädvustab praeguse ekraanihierarhia ja näitab iga sõlme paketti ja klassi.
Levinumad soovitud võimete vead ja kuidas neid parandada
Kõige ebaõnnestunud Appium seansid lõpevad enne ühe testietapi käivitamist ja põhjus on peaaegu alati pigem võimete komplektis kui testis. Allolev tabel seob iga teate selle tavapärase lahendusega.
| Jäta sõnum | Tõenäoline põhjus | Määrama |
| Kehtetu või toetamata WebDriveri funktsioon | Mittestandardne võimekus saadeti ilma tarnija eesliiteta | Lisa sinna appium: või liiguta see üksuse appium:options sisse |
| Soovitud võimalused peavad sisaldama kas automationName'i või platformName'i. | Appium 2 ei saa juhti valida | Määrake platvormi nimi ja appium:automationName selgesõnaliselt |
| Rakendust ei saa käivitada. Algne viga: rakenduse käivitamiseks kasutatud tegevust pole olemas. | appActivity ei vasta manifestile | Loe väärtus uuesti ülaltoodud dumpsys käsuga |
| Seanss ei alanud: seadmeid ei leitud | Emulaatorit ega telefonitoru pole ühendatud | Enne käivitamist kinnitage seade ADB-seadmetega |
| Pärast ajalõpu lõppu ei saanud uut seanssi luua | Avakuva lükkab sisestust edasi | Määrake appWaitActivity ja suurendage appWaitDuration väärtust |
| Rakenduse olekut ei lähtestata käivituste vahel | Vaikimisi lähtestamise käitumine tühistati | Revsoovitud käivitamiseks käske iew appium:noReset ja appium:fullReset |
Kui seanss keeldub algamast, lugege Appium serverilogi, mitte kliendi pinu trace. Server märgib, millist võimekust ta ei suutnud rahuldada, ja see rida nimetab paranduse.
