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.

  • ๐Ÿ”ด Istunto contract: Ominaisuudet siirtyvรคt uuden istunnon pyynnรถn JSON-rungossa, eikรค niitรค voida muuttaa jรคlkikรคteen.
  • โ˜‘๏ธ Android olennaiset asiat: appPackage ja appActivity nimeรคvรคt sovelluksen ja nรคytรถn Appium pitรคisi kรคynnistyรค.
  • โœ… Odotusvaihtoehdot: appWaitPackage ja appWaitActivity kattavat aloitusnรคytรถt, jotka nรคkyvรคt ennen varsinaista aloituspistettรค.
  • ๐Ÿงช Appium 2 etuliite: Jokainen epรคstandardi ominaisuus tarvitsee nyt appium: vendor -etuliitteen, tai palvelin hylkรครค sen.
  • ๐Ÿ› ๏ธ Moderni Java asiakas: DesiredCapabilities vรคistyi UiAutomator2Optionsin ja XCUITestOptionsin tieltรค alla Selenium 4.
  • ๐Ÿ“Š Arvojen lรถytรคminen: adb dumpsys -kysely tai PackageManager-luokka paljastaa paketin ja aktiviteetin nimet.

Appium haluttujen ominaisuuksien avain-arvoparit Android emulaattoriistunto

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.

UKK

Ei. platformName ja browserName ovat W3C:n vakio-ominaisuuksia, ja ne pysyvรคt etuliitteettรค. Joka toinen Appium ominaisuus, mukaan lukien deviceName ja platformVersion, on toimittajan laajennus ja tarvitsee appium:-etuliitteen.

Laitepilvien koneoppimistyรถkalut ehdottavat koonti- ja kohdelaitteesta mรครคritettyรค ominaisuusjoukkoa ja merkitsevรคt arvot, jotka epรคonnistuivat samankaltaisissa istunnoissa. Kรคsittele tulostetta luonnoksena ja vahvista jokainen nimi ajuridokumentaatiota vasten.

Copilot suorittaa yleisiรค kykylohkoja, mutta sitรค on koulutettu monilla Appium 1-koodia ja usein jรคttรครค etuliitteen pois tai ehdottaa vanhentunutta DesiredCapabilities-luokkaa. Tarkista jokainen ehdotus nykyistรค opasta vasten.

appPackage nimeรครค paketin Appium kรคynnistyy. appWaitPackage nimeรครค paketin Appium odottaa ilmestymistรค ennen hallinnan palauttamista, millรค on merkitystรค, kun kรคynnistysohjelma tai aloitusnรคyttรถ lataa ensin toisen paketin.

platformName-arvoksi on asetettu iOS ja appium:automationName-arvoksi XCUITest. XCUITest-ajuri tarvitsee myรถs vรคhintรครคn yhden seuraavista: appium:app, appium:bundleId tai browserName, muuten se avaa istunnon aloitusnรคytรถssรค.

Sekuntimรครคrรค, jonka palvelin odottaa asiakkaan seuraavan komennon lรคhettรคmistรค. Jos odotusaika ylittyy, palvelin olettaa asiakkaan poistuneen ja sulkee istunnon, mikรค usein nรคyttรครค satunnaiselta epรคonnistumiselta.

noReset ohittaa tavallisen nollauksen, joten sovellustiedot sรคilyvรคt istunnon jรคlkeen. fullReset lisรครค ylimรครคrรคisiรค vaiheita, asennuksen poistamisen ja uudelleenasennuksen, parhaan toistettavuuden takaamiseksi. Molempien oletusarvo on false, eikรค niitรค tule ottaa kรคyttรถรถn yhdessรค.

Ei. Ominaisuudet ovat istunnon aloittamiseen kรคytettรคviรค parametreja, ja ne kiinteytyvรคt istunnon luomisen jรคlkeen. Jos ajuri sallii toiminnan muuttumisen istunnon aikana, se paljastaa asetuksen Settings API:n kautta.

Tiivistรค tรคmรค viesti seuraavasti: