Appium Maven-riippuvuus: Asennus Eclipse Esimerkki projektista

⚡ Älykäs yhteenveto

Appium Mavenin riippuvuuksien hallinta antaa mobiiliautomaatioprojektin määrittää Java-client-artefaktin pom.xml-tiedostossa, jolloin Maven ratkaisee jokaisen jar-tiedoston automaattisesti ja sama koontiversio toimii millä tahansa koneella ilman manuaalisia latauksia.

  • 🔴 Mitä Maven tekee: Apache Maven hallinnoi koontisykliä ja ratkaisee riippuvuudet yhdestä deklaratiivisesta pom.xml-tiedostosta.
  • ☑️ Yksi artefakti: io.appium java-client -riippuvuus hakee Selenium API, etäajuri ja tukitiedostot transitiivisesti.
  • Versiokuri: Yhdistä java-client-julkaisu Selenium alue, jonka se ilmoittaa välttääkseen NoSuchMethodError-virheen suorituksen aikana.
  • 🧪 Kiinteä asettelu: Surefire suorittaa vain src/test/java-hakemistossa olevat luokat, joten väärin sijoitetut testit kääntyvät, mutta eivät koskaan suorita.
  • 🛠️ Komentorivi: mvn clean test kääntää ja suorittaa testipaketin ja kirjoittaa tulokset target/surefire-reports-tiedostoon.
  • 📊 Edellytykset: Maven ei koskaan aloita Appium palvelimelle tai laitteelle, joten molempien on oltava valmiita ennen koontiversion aloittamista.

Appium Maven-riippuvuuksien määrittäminen pom.xml:llä ja Java-client-artefaktilla

Mikä on Apache Maven?

Apache Maven on Java-pohjainen projektinhallinta- ja automaatiotyökalu. Se tarjoaa kehittäjille moniajokehyksen, joka helpottaa koko rakennuksen elinkaarta Java sovelluksia. Maven on ennalta määritetty ja ilmoitettu XML-muodossa nimeltä POM (Project Object Model) ja jota kutsutaan nimellä "pom.xml". Sitä voidaan käyttää myös muilla kielillä, kuten C#, Scala, Ruby jne.

Maven-kehyksen avulla voit helposti hallita seuraavia tehtäviä missä tahansa projektissa:

  • Rakenna sykli
  • Projektin dokumentaatio
  • Raportoi tarkastukset
  • Scrumsin hallinta
  • Julkaisutiedot

Mavenin peruskäyttötarkoituksia ovat:

  • Pakottaa vakiohakemistorakenteen.
  • Tarjoa uudelleen käytettävä ja helppohoitoinen projektirakenne.
  • Ratkaise pakettien riippuvuudet.
  • Tarjoa kokoonpanonhallintakehys.

Tuo riippuvuuksien ratkaisukyky on juuri sitä, mitä Appium projektin tarpeet, koska Java asiakas vetää sisään ketjun Selenium purkkeja, joita kukaan ei halua ladata käsin.

Lataa Appium Maven-riippuvuudet

Ennen kuin aloitat kirjoittamisen Appium riippuvuustesti Mavenilla, sinun on ladattava Appium Maven-riippuvuus — Appium JAR-lataustiedosto — osoitteesta Mavenin keskustietovaraston verkkosivustoAlla oleva kuvakaappaus näyttää Java-asiakasohjelman artefaktien listauksen Maven Centralissa, josta löytyvät kaikki julkaistut versiot ja niiden valmis koodinpätkä.

Appium java-client-artefaktien listaus Mavenin keskitetyn arkiston hakusivulla

Tai lisää suoraan alla mainittu POM.xml-artefakti:

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>3.4.1</version>
</dependency>

⚠️ Versiohuomautus: Ishayoiden opettaman 3.4.1 Yllä oleva koordinaatti on alkuperäinen esimerkki ja näyttää edelleen lohkon oikean muodon. Se on vanhempi kuin W3C WebDriver -protokolla, joten uuden projektin pitäisi nostaa versiota. Kirjoitushetkellä Maven Centralin nykyinen versio on 10.1.1, joka vaatii Selenium 4.42.0 tai uudempi.

<dependency>
  <groupId>io.appium</groupId>
  <artifactId>java-client</artifactId>
  <version>10.1.1</version>
</dependency>

Ole hyvä ja käy läpi Maven opetusohjelma oppiaksesi määrittämään Mavenin Eclipse.

Appium Maven-projektin rakenne ja vaaditut riippuvuudet

Maven käyttää kiinteää asettelua, ja sen tunteminen estää suurimman osan myöhemmin tässä läpikäynnissä seuraavasta sekaannuksesta. Luotu projekti sisältää neljä tärkeää sijaintia:

  • pom.xml — projektin juuressa oleva Project Object Model, jossa jokainen riippuvuus ja laajennus on määritelty.
  • src / main / java — sovellus- ja apuluokat.
  • src/testi/java — testiluokat ja ainoa hakemisto, jonka Surefire-laajennus skannaa, kun suoritat koontiversion.
  • tavoite — kootut tuloste- ja testiraportit, jotka luodaan uudelleen jokaisella koontiversiolla.

Appium java-client on ainoa pakollinen riippuvuus, koska se määrittää Selenium API, etäajurit ja tukiartefaktit transitiivisesti. Monet tiimit pinaavat edelleen. Selenium eksplisiittisesti, jotta versio näkyy yhdessä paikassa, ja lisää testiajo suoritin:

<dependencies>
  <dependency>
    <groupId>io.appium</groupId>
    <artifactId>java-client</artifactId>
    <version>10.1.1</version>
  </dependency>
  <dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>4.42.0</version>
  </dependency>
</dependencies>

Pidä kaksi versiota yhteensopivina. Java-asiakasversiossa todetaan, että Selenium tukemansa alueen ja vanhan asiakkaan yhdistämisen paljon uudempaan Selenium on yleisin NoSuchMethodError-virheen syy suorituksen aikana. java-asiakasohjelmiston arkisto dokumentoi parituksen jokaista julkaisua varten.

Sovelluksen testaus Appium ja Maven

Kun riippuvuus on olemassa, Eclipse alla oleva työnkulku rakentaa ajettavan projektin tyhjästä. Kun olet määrittänyt Appium Java Maven-laajennus Eclipse, työtila on valmis testaamaan mitä tahansa Android .apk sovellus kanssa Appium ja Maven, kuten kuvassa näkyy Appium Alla esimerkki Maven-projektista.

Vaihe 1) Tässä vaiheessa

  1. Siirry kohtaan UUSI >> valitse Maven-projekti
  2. Klikkaa 'Seuraava'-painiketta

Uuden projektin luontitoiminto avautuu Maven-projekti korostettuna, kuten tässä näkyy.

Eclipse Uusi projekti -ohjattu toiminto, jossa Maven-projekti on valittuna

Vaihe 2) Kirjoita sitten 'Uusi Maven-projekti' -ikkunaan 'Appium Testi' Ryhmätunnus- ja Artefaktitunnus-sarakkeissa. Tässä vaiheessa sinun on annettava:

  1. Ryhmän tunnus
  2. Artefaktin tunnus
  3. Versio
  4. Pakkaus
  5. Nimi ja Descriptioni
  6. Suorittaa loppuun

Valmis New Maven -projektilomake näyttää alla olevalta kuvakaappaukselta.

Uusi Maven-projekti-ikkuna, johon on täytetty ryhmän tunnus, artefaktin tunnus, versio ja pakkaus

Valmis-painikkeen napsauttaminen avaa uuden luokan määritetyn ryhmätunnuksen alle (AppiumTesti) nimi.

Vaihe 3) Aluksi Appium skripti, napsauta hiiren kakkospainikkeella 'src/main/java' vasemmanpuoleisessa Resurssienhallinta-ikkunassa. Valitse sitten Uusi >> luokka. Kirjoita Appium koodi valitun luokan sisällä.

Luokan luomiseen käytetty kontekstivalikko näkyy alla.

Napsauta hiiren kakkospainikkeella valikkoa src/main/java-sivustolla, jossa näkyy Uusi ja Luokka Eclipse tutkimusmatkailija

Vaihe 4) Napsauta samassa projektissa vasemmanpuoleisessa Resurssienhallinta-valikossa pom.xml-tiedostoa. Kaikki riippuvuudet näkyvät oletusarvoisesti 'pom.xml'-välilehdellä. Katso alla olevaa kuvaa.

pom.xml-editorin välilehti Eclipse listaa ratkaistut projektin riippuvuudet

Jos oletusarvoista pom.xml-tiedostoa ei ole olemassa, lisää vain kaikki Maven-tiedostot. Appium riippuvuudet, esim.tracMavenin keskusarkiston verkkosivustolta:

https://central.sonatype.com/artifact/io.appium/java-client

Muokattu pom.xml-tiedosto, jossa on Appium Lisätyt riippuvuudet näkyvät alla.

pom.xml-lähdekoodinäkymä sen jälkeen Appium java-client-riippuvuus on liitetty

Vaihe 5) Napsauta nyt hiiren kakkospainikkeella tiedostoa 'pom.xml' vasemmassa Resurssienhallinnassa tai XML-koodia tiedostolle 'AppiumTesti-projekti. Napsauta sitten vaihtoehtoa 'Suorita nimellä >> Maven Clean', kuten alla on esitetty.

Eclipse Suorita nimellä -alivalikko, jossa Maven Clean -vaihtoehto on korostettuna

Suorituksen aikana näet kaikki Maveniin liittyvät jar-tiedostot ja onnistumisviestin, kuten alla olevassa konsolin tulosteessa. Näin suoritat Appium Java asiakkaan Maven-riippuvuustesti Maven-konfiguroidussa ympäristössä.

Eclipse konsoli, joka näyttää ladatut Maven-jar-tiedostot ja koontiversion onnistumisviestin

Kuinka ajaa Appium Testit Maven-komennoilla

Eclipse valikko on kätevä, mutta saman koontiversion on suoritettava valvomatta koontipalvelimella, ja siellä komentorivi on ainoa vaihtoehto. Avaa pääteohjelma pom.xml-tiedostoa sisältävässä kansiossa ja käytä näitä komentoja.

mvn clean
mvn clean test
mvn clean install
mvn test -Dtest=LoginTest

Jokaisella on oma selkeä tehtävänsä:

  • mvn-puhdistus poistaa target hakemistoon, jotta mikään vanhentunut ei säily seuraavassa koonnissa. Tämä on komento, jonka Eclipse yllä olevien liipaisimien läpikäynti.
  • mvn puhdas testi kääntää projektin ja suorittaa testiluokat. Maven Surefire -lisäosa poimii ne automaattisesti src/test/java, käyttäen oletusarvoisia sisällytysmalleja Test*.java, *Test.java, *Tests.java ja *TestCase.java.
  • mvn puhdas asennus suorittaa testit ja sijoittaa sitten pakatun artefaktin paikalliseen arkistoosi, jotta toinen projekti voi olla siitä riippuvainen.
  • mvn test -Dtest=Kirjautumistesti rajaa suorituksen yhteen luokkaan debugauksen aikana.

Kaksi asiaa pistää ihmiset epäilyksen valtaan. Ensinnäkin Appium palvelimen on oltava jo käynnissä ja laitteen tai emulaattorin on oltava kytkettynä ennen koonnin aloittamista, koska Maven ei käynnistä kumpaakaan — tarkista laite ADB tarkista ensin. Toiseksi, tulokset kirjoitetaan target/surefire-reports, joka on kansio, johon CI-työn tulisi arkistoida. Surefiren käyttöopas kattaa määritysvaihtoehdot yksityiskohtaisesti, ja samat komennot ohjaavat Appium sviitti alkaen Jenkins.

Yhteinen Appium Maven-virheet ja niiden korjaaminen

Useimmat epäonnistumiset Appium Mavenin asennuksen ongelmat johtuvat useista toistuvista syistä pikemminkin kuin itse testikoodista. Alla oleva taulukko yhdistää jokaisen oireen sen tavanomaiseen ratkaisuun.

Oire Todennäköinen syy Korjata
Io.appium:java-client-kohteen riippuvuuksia ei voitu ratkaista. Väärä versiomerkkijono tai ei verkkoyhteyttä Maven Centraliin Kopioi koordinaatit suoraan Maven Centralin listauksesta ja suorita koonti uudelleen
NoSuchMethodError tai NoClassDefFoundError kohteelta Selenium luokka java-client- ja selenium-java-versiot eivät ole yhteensopivia Sovittaa Selenium versio java-client-julkaisun määrittämään alueeseen
Testit kääntyvät, mutta yksikään ei suorita Testiluokat sijaitsevat src/main/java-hakemistossa, tai luokan nimi ei vastaa Surefire-sisällytysmallia Siirrä ne hakemistoon src/test/java ja nimeä luokka niin, että se päättyy Test-muotoon.
Yhteys estetty portissa 4723 Appium palvelin ei ole käynnissä Aloita Appium palvelin ennen koontia
Virheellinen tai ei-tuettu ominaisuus Nykyaikaisen ajurin kanssa käytetyt vanhat ominaisuusnimet Revkatso nykyistä halutut ominaisuudet alustallesi
Ei-tuettu luokkatiedoston pääversio Mavenin käyttämä JDK eroaa pom.xml-tiedoston kääntäjätasosta Kohdista maven.compiler.source- ja target-ominaisuudet asennettujen tiedostojesi mukaisiksi. JDK

Kun koonti epäonnistuu, lue Mavenin tulostama ensimmäinen virhe viimeisen sijaan. Myöhemmät rivit ovat yleensä seurausta ensimmäisestä puuttuvasta artefaktista.

UKK

Ota Maven Centralissa listattu uusin versio mieluummin kuin vanhasta tutoriaalista kopioitu versio. Kirjoitushetkellä se on 10.1.1, joka odottaa Selenium 4.42.0 tai uudempi luokkapolulla.

Koneoppimismallit korjaavat elementtien paikantimet käyttöliittymämuutoksen jälkeen, ryhmittelevät päällekkäiset virheet eri laitteiden välillä ja ennustavat, mitkä testit commit todennäköisesti rikkoo, joten lyhyempi Maven-ajo kattaa riskialueen.

Copilot täydentää groupId-, artifactId- ja version-elementit yksirivisellä kommentilla. Se ehdottaa usein vanhentunutta versionumeroa, joten varmista koordinaatti Maven Centralia vasten ennen tiedoston commitointia.

Ei täysin. Java-asiakasohjelma määrittää Selenium artefaktat transitiivisesti. Monet tiimit pinaavat selenium-javan edelleen eksplisiittisesti, jotta versio on näkyvissä ja päivitykset ovat tarkoituksellisia eivätkä vahingossa tehtyjä.

Molemmat ratkaisevat samat ongelmat. Maven käyttää deklaratiivista XML:ää ja sopii tiimeille, jotka haluavat kiinteän elinkaaren. Gradle skriptit Groovy tai Kotlinia ja se rakentuu inkrementaalisesti, mikä auttaa suurissa, monimoduulisissa repositorioissa.

Surefire skannaa hakemiston vain koonnin aikana, joten hakemistoon src/main/java jätetty luokka kääntyy, mutta ei koskaan suoriteta, mikä näyttää hiljaisesti ohittavalta sviitiltä.

Ei. Maven ratkaisee JAR-tiedostot ja suorittaa vain testejä. Käynnistä Appium palvelin ja yhdistä ensin laite tai emulaattori tai käynnistä palvelin testiasennusmenetelmästäsi tai CI-putken vaiheesta.

Tarkista arkisto, käynnistä Appium palvelin ja laite ja suorita sitten mvn-puhdistustesti. ArchiKäytä target/surefire-raportteja koontiartefaktina, jotta virheet pysyvät luettavissa agentin tuhoamisen jälkeen.

Tiivistä tämä viesti seuraavasti: