Appium Halutut ominaisuudet Android Emulaattori
โก รlykรคs yhteenveto
Halutut ominaisuudet ovat avain-arvo-pareja ja Appium asiakas lรคhettรครค istunnon avattuaan palvelimelle tiedon, jonka avulla palvelimelle kerrotaan, mitรค alustaa, laitetta, ajuria ja sovellusta vasten automaattinen testi tulisi suorittaa.
Mitรค ovat halutut ominaisuudet
'Halutut ominaisuudet' auttavat meitรค muokkaamaan palvelimen toimintaa automaation aikana. Appium se on hashmap eli avain-arvo-pari, jota kรคytetรครคn komennon lรคhettรคmiseen Appium palvelimella, jossa jokainen asiakaskomento suoritetaan istunnon yhteydessรค.
Esimerkiksi asiakas lรคhettรครค POST /session-pyynnรถn, joka sisรคltรครค JSON-objektin, Appium palvelin.
Joten pyynnรถn lรคhettรคmiseen tai istunnon yllรคpitรคmiseen palvelimen kanssa kรคytetรครคn avain- ja arvopareja. Tรคtรค kutsutaan halutuiksi ominaisuuksiksi.
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"); }
Halutun kyvykkyyden tรคrkeรค rooli
- 'DesiredCapabilities' auttavat kรคyttรคjรครค hallitsemaan istuntopyyntรถรค palvelimen kanssa. Esimerkiksi iOS-istunnolle asetamme ominaisuuden platformName = iOS ja Android istuntoalustanNimi = Android.
- 'DesiredCapabilities'-ominaisuuksia kรคytetรครคn esimerkiksi WebDriver-instanssin mรครคrittรคmiseen FirefoxOhjain, ChromeDriver tai InternetExplorerDriver.
- DesiredCapability on erittรคin hyรถdyllinen Selenium Grid. Sitรค kรคytetรครคn esimerkiksi eri testitapausten suorittamiseen eri selaimessa ja eri kรคyttรถjรคrjestelmรคssรค. Ilmoitetun ominaisuuden perusteella Grid-keskitin osoittaa vastaavaan solmuun. Solmut mรครคritellรครคn 'set'-ominaisuusmetodeilla:
DesiredCapabilities obj = new DesiredCapabilities(); obj.setBrowserName("firefox"); obj.setVersion("18.0.1"); obj.setPlatform(org.openqa.selenium.Platform.WINDOWS);
- Haluttu ominaisuus on kirjastokohtaisesti mรครคritelty paketti. Ennen 'DesiredCapabilities'-ominaisuuden kรคyttรถรค se tulee tuoda alla olevasta kirjastosta.
Org.openqa.selenium.remote.DesiredCapabilities
Appium tukee molempia Android ja iOS:lle, joten on olemassa erillinen joukko Appium palvelinominaisuudet kullekin alustalle.
Alla oleva taulukko nรคyttรครค joitakin yleisesti kรคytettyjรค Android ominaisuudet ja kรคytettรคvรคt arvot.
| Kyvyt | Tuotetiedot | Arvot/kรคytรถt |
|---|---|---|
| sovelluspaketti | Soita haluttuun Java pakkaus sisรครคn Android jonka kรคyttรคjรค haluaa suorittaa |
Arvo= com.example.myapp/ Obj.setCapability("appPackage", "com.whatsapp"); |
| sovellustoiminta | Sovellustoiminto, jonka kรคyttรคjรค haluaa kรคynnistรครค paketista. |
Arvo= MainActivity, .Settings Obj.setCapability("appActivity", "com.whatsapp.Main"); |
| appWaitPackage | Paketti, jota sovelluksen on odotettava | Value=com.example.android.myapp |
| appWaitActivity | mitรครคn Android toiminto, jota kรคyttรคjรคn on odotettava |
Arvo = SplashActivity capabilities.setCapability("appWaitActivity", "com.example.game.SplashActivity") |
HUOMAUTUS: katso Appium dokumentointi nรคhdรคksesi lisรครค Android valmiuksia.
Alla oleva taulukko nรคyttรครค joitakin yleisesti kรคytettyjรค iOS-ominaisuuksia ja niiden arvoja.
| Kyvyt | Tuotetiedot | arvot |
|---|---|---|
| LaunchTimeout | Kokonaisaika (ms) odottaa instrumentointia. | 2000 |
| UDID | Yhdistetyn fyysisen laitteen yksilรถllisen laitenumeron tunnistaminen | 166aestu4 |
HUOMAUTUS: katso Appium kykyopas nรคhdรคksesi lisรครค iOS:n ominaisuuksia.
Miten halutut ominaisuudet muuttuivat Appium 2
Yllรค olevat esimerkit ovat perรคisin mm. Appium 1 aikakausi ja nรคyttรครค edelleen kykyjoukon muodon, mutta kaksi sรครคntรถรค on muuttunut ja molemmat estรคvรคt modernin istunnon alkamisen.
Ensinnรคkin W3C WebDriver -spesifikaatio mรครคrittelee vain pienen joukon vakio-ominaisuuksia, joista platformName ja browserName merkitystรค. Kaikki muut ominaisuudet ovat toimittajan laajennuksia, ja niissรค on oltava kaksoispisteeseen pรครคttyvรค nimiavaruuden etuliite. Appiumetuliite on appium:. Niin deviceName tulee appium:deviceName ja platformVersion tulee appium:platformVersion. Appium 2 vaatii myรถs appium:automationName, koska ajurit asennetaan erikseen sen sijaan, ettรค ne toimitettaisiin palvelimen mukana.
Toiseksi, etuliitteen toistaminen kรคy tyรถlรครคksi, joten Appium hyvรคksyy yhden appium:options ominaisuus, jonka arvo on objekti. Objektin sisรคllรค olevat ominaisuudet eivรคt tarvitse etuliitettรค, ja jos nimi esiintyy sekรค objektin sisรคllรค ettรค ulkopuolella, sisempi arvo voittaa.
{
"platformName": "iOS",
"appium:options": {
"automationName": "XCUITest",
"platformVersion": "16.0",
"app": "/path/to/your.app",
"deviceName": "iPhone 12",
"noReset": true
}
}
โ ๏ธ Versiohuomautus: pรฅ den Java puoli, Selenium 4 ja Appium Java asiakas 8 vanhensi DesiredCapabilities aiemmin nรคytetty luokka. Ajurikohtaiset rakentajat periytyvรคt BaseOptions korvaa se โ UiAutomator2Options varten Android ja XCUITestOptions iOS:lle โ yksi yhteen -kartallaping jokaiselta vanhalta setCapability puhelu. Yllรค oleva alkuperรคinen koodi on tรคssรค sรคilytetty historiallisena esimerkkinรค.
ExtracPakettien ja aktiviteettien tiedot
Paketit ovat paketoituja tiedostoja tai luokkia. Ne antavat modulaariselle ohjelmoinnille jรคrjestelmรคllisen rakenteen. Javaeri paketit tallennetaan yhteen JAR-tiedostoon, ja kรคyttรคjรค voi kutsua kyseistรค JAR-tiedostoa tรคyden suorittamisen suorittamiseksi. Samanlaista konseptia noudatetaan mobiilisovelluskehityksessรค.
In Android kรคyttรถjรคrjestelmรคssรค kaikki sovellukset asennetaan muodossa Java paketteja. Joten esimerkiksitract-paketin polkutiedot, Android PackageManager-luokkaa kรคytetรครคn.
Se hakee laitteeseen esiasennettujen ja jรคlkiasennettujen sovellusten paketti- ja toimintatietoja.
Voit saada PackageManager-luokan instanssin kutsumalla getPackageManager(). Tรคmรค metodi voi kรคyttรครค ja muokata asennettujen sovellusten paketteja ja niihin liittyviรค kรคyttรถoikeuksia.
Esimerkiksi:
PackageManager pManager = getPackageManager();
List<ApplicationInfo> list = pManager.getInstalledApplications(PackageManager.GET_META_DATA)
AppPackage- ja appActivity-kohteiden lรถytรคminen ADB:n avulla
Yllรค oleva PackageManager-reitti toimii sovelluksen sisรคltรค. Testaajana sinulla on yleensรค vain asennettu koontiversio, joten nopeampi polku on kysely ADB kytkettyรค laitetta tai emulaattoria vasten.
Avaa sovellus laitteella manuaalisesti ja suorita sitten jokin alla olevista komennoista terminaalissa platform-tools-kansiossa. Komento tulostaa ikkunan, jossa tรคllรค hetkellรค on aktiivinen, ja arvo muotoillaan muodossa package/activity.
adb shell dumpsys window | find "mCurrentFocus" adb shell dumpsys window windows | grep -i "mCurrentFocus"
Kรคytรค ensimmรคistรค lomaketta Windows komentokehotteessa ja toinen Unix-komentotulkissa tai Git Bashissa. Lue tulos kahtena puolikkaana: kaikki kauttaviivaa edeltรคvรค osa on funktion arvo appPackage, ja kaikki sen jรคlkeen oleva on arvoa appActivity.
Kaksi varoitusta on voimassa. Keskitetty toiminto on se, mikรค on nรคytรถllรค sillรค hetkellรค, eikรค se aina ole se toiminto, jolla sovellus aloittaa โ jos istunto epรคonnistuu ajurin alustuksen aikana, kรคynnistรค sovellus alusta ja lue arvo uudelleen. Ja jos aloitusnรคyttรถ tulee ensin nรคkyviin, syรถttรถtoiminto eroaa siitรค, jota vastaan โโโโlopulta haluat vรคittรครค, mikรค on juuri niin. appWaitActivity on olemassa.
Visuaalinen vaihtoehto on uiautomatorviewer, joka tallentaa nykyisen nรคyttรถhierarkian ja nรคyttรครค jokaisen solmun paketin ja luokan.
Yleisiรค haluttujen ominaisuuksien virheitรค ja niiden korjaaminen
Eniten epรคonnistuneita Appium istunnot pรครคttyvรคt ennen kuin yksikรครคn testivaihe on suoritettu, ja syy on lรคhes aina ominaisuusjoukossa eikรค testissรค. Alla oleva taulukko yhdistรครค jokaisen viestin sen tavanomaiseen korjaukseen.
| Viesti | Todennรคkรถinen syy | Korjata |
| Virheellinen tai ei-tuettu WebDriver-ominaisuus | Epรคstandardi ominaisuus lรคhetettiin ilman toimittajan etuliitettรค | Lisรครค siihen appium: tai siirrรค se appium:options-valikon sisรครคn. |
| Haluttujen ominaisuuksien on sisรคllettรคvรค joko automationName tai platformName. | Appium 2 ei voi valita kuljettajaa | Aseta platformName ja appium:automationName eksplisiittisesti |
| Sovellusta ei voida kรคynnistรครค. Alkuperรคinen virhe: sovelluksen kรคynnistรคmiseen kรคytettyรค toimintoa ei ole olemassa. | appActivity ei vastaa manifestia | Lue arvo uudelleen yllรค olevalla dumpsys-komennolla |
| Istunto ei alkanut: laitteita ei lรถytynyt | Emulaattoria tai luuria ei ole liitetty | Vahvista laite ADB-laitteilla ennen kรคynnistรคmistรค |
| Uutta istuntoa ei voitu luoda aikakatkaisun jรคlkeen | Aloitusnรคyttรถ viivรคstyttรครค syรถttรถtoimintoa | Aseta appWaitActivity ja nosta appWaitDuration-arvoa |
| Sovelluksen tilaa ei nollata suoritusten vรคlillรค | Oletusasetusten palautustoiminto on ohitettu | Review appium:noReset ja appium:fullReset haluamallesi suorituskerralle |
Kun istunto ei kรคynnisty, lue Appium palvelinloki asiakaspinon sijaan trace. Palvelin ilmoittaa, mitรค ominaisuutta se ei pystynyt tรคyttรคmรครคn, ja kyseinen rivi nimeรครค korjauksen.
