Appium Зависимост от Maven: Настройка с Eclipse Пример за проект

⚡ Умно обобщение

Appium Управлението на зависимостите в Maven позволява на проект за мобилна автоматизация да декларира артефакта на Java-клиента в pom.xml, така че Maven автоматично разрешава всеки JAR и същата компилация се изпълнява на всяка машина без ръчно изтегляне.

  • ???? Какво прави Maven: Apache Maven управлява жизнения цикъл на изграждане и разрешава зависимости от един декларативен pom.xml файл.
  • ☑️ Един артефакт: Зависимостта на io.appium java-client изтегля Selenium API, отдалечен драйвер и поддържащи jar файлове транзитивно.
  • Дисциплина на версията: Съпоставете версията на Java-клиента с Selenium диапазонът, който декларира, за да избегне NoSuchMethodError по време на изпълнение.
  • 🧪 Фиксирано оформление: Surefire изпълнява само класовете под src/test/java, така че неправилно поставените тестове се компилират, но никога не се изпълняват.
  • 🛠️ Команден ред: mvn clean test компилира и изпълнява пакета, записвайки резултатите в target/surefire-reports.
  • 📊 Необходими условия: Мейвън никога не започва Appium сървър или устройство, така че и двете трябва да са готови преди началото на изграждането.

Appium Настройка на зависимостите на Maven с pom.xml и артефакта на Java-клиента

Какво е Apache Maven?

Apache Maven е Java-базиран инструмент за управление на проекти и автоматизация. Той предоставя многозадачна рамка за разработчиците, която да улесни пълния жизнен цикъл на изграждане Java приложения. Maven е предварително дефиниран и деклариран в XML формат, наречен POM (Project Object Model) и наричан „pom.xml“. Може да се използва и за други езици като C#, Scala, Ruby и др.

С помощта на рамката Maven можете лесно да управлявате следните задачи във всеки проект:

  • Цикъл на изграждане
  • Проектна документация
  • Докладвайте проверките
  • Управление на Scrums
  • Информация за издаване

Основните приложения на Maven са:

  • Налага стандартна структура на директория.
  • Осигурете многократно използваема и лесна за поддръжка структура на проекта.
  • Разрешаване на зависимости на пакети.
  • Осигурете рамка за управление на конфигурацията.

Тази способност за разрешаване на зависимости е точно това, което Appium нуждите на проекта, защото Java клиентът дърпа верига от Selenium jar файлове, които никой не иска да изтегля на ръка.

Изтегли Appium Зависимости на Maven

Преди да започнете да пишете Appium тест за зависимости с Maven, трябва да изтеглите Appium Зависимостта на Maven — Appium JAR файл за изтегляне — от Уебсайт на централното хранилище на MavenСнимката на екрана по-долу показва списъка с артефакти на Java-клиент в Maven Central, където са налични всяка публикувана версия и нейният готов фрагмент.

Appium списък с артефакти на Java-client на страницата за търсене в централното хранилище на Maven

Или директно добавете артефакта POM.xml, споменат по-долу:

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

⚠️ Бележка към версията: - 3.4.1 Координатата по-горе е оригиналният пример и все още показва правилната форма на блока. Той е предшестващ протокола W3C WebDriver, така че нов проект би трябвало да повиши версията. Към момента на писане, текущата версия в Maven Central е 10.1.1, което изисква Selenium 4.42.0 или по-нова версия.

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

Моля, преминете през нашия Урок за Maven за да научите как да конфигурирате Maven с Eclipse.

Appium Структура на Maven проект и необходими зависимости

Maven налага фиксирано оформление и познаването му предотвратява по-голямата част от объркването, което следва по-късно в това ръководство. Генерираният проект съдържа четири важни местоположения:

  • pom.xml — обектният модел на проекта в корена на проекта, където е декларирана всяка зависимост и плъгин.
  • src/основен/java — приложения и помощни класове.
  • src/test/java — тестови класове и единствената директория, която плъгинът Surefire сканира, когато стартирате компилация.
  • цел — компилиран изход и тестови доклади, генерирани отново при всяко изграждане.

- Appium java-client е единствената задължителна зависимост, защото декларира Selenium API, отдалечен драйвер и поддържат артефакти транзитивно. Много екипи все още закрепват Selenium изрично, така че версията да е видима на едно място, и добавете тестов изпълнител:

<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>

Поддържайте двете версии съвместими. В издание на Java-клиент се посочва, че Selenium диапазона, който поддържа, и смесването на стар клиент с много по-нов Selenium е най-честата причина за NoSuchMethodError по време на изпълнение. хранилище за Java-клиенти документира сдвояването за всяко издание.

Тестване на приложение с Appium и Мейвън

С налице зависимост, Eclipse Работният процес по-долу изгражда изпълним проект от нулата. След конфигуриране на Appium Java Maven плъгин Eclipse, работното пространство е готово за тестване на всякакви Android .apk приложение с Appium и Maven, както е показано в Appium Пример за проект Maven по-долу.

Стъпка 1) В този етап,

  1. Отидете на НОВ >> изберете проект Maven
  2. Кликнете върху бутона „следващ“

Съветникът за нов проект се отваря с маркиран Maven Project, както е показано тук.

Eclipse Съветник за нов проект с избран Maven Project

Стъпка 2) След това в прозореца „Нов Maven проект“ въведете „Appium „Тест“ в колоните „Идентификатор на група“ и „Идентификатор на артефакт“. В тази стъпка трябва да въведете:

  1. Идент. № на групата
  2. Идент. № на артефакт
  3. версия
  4. Опаковка
  5. Име и Descriptйон
  6. завършеност

Попълненият формуляр за нов Maven проект изглежда като екранната снимка по-долу.

Прозорец на нов Maven проект с попълнени Group Id, Article Id, Version и Packaging

Щракването върху бутона „Готово“ ще отвори нов клас под дефинирания идентификатор на групата (AppiumИме на теста).

Стъпка 3) За да започнем с Appium скрипт, щракнете с десния бутон върху 'src/main/java' в левия прозорец на Explorer. След това изберете New >> class. Напишете Appium код в избрания клас.

Контекстното меню, използвано за създаване на този клас, е показано по-долу.

Меню с десен бутон върху src/main/java, показващо New и Class в Eclipse изследовател

Стъпка 4) В същия проект, щракнете върху pom.xml в лявото меню на Explorer. Всички зависимости ще бъдат видими по подразбиране в раздела „pom.xml“. Вижте изображението по-долу.

раздела на редактора pom.xml в Eclipse изброяване на разрешените зависимости на проекта

Ако по подразбиране pom.xml не съществува, просто добавете всички Maven Appium зависимости, напр.tracизтеглено от уебсайта на централното хранилище на Maven:

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

Редактираният pom.xml с Appium добавените зависимости са показани по-долу.

изглед на изходния код pom.xml след Appium Зависимостта от Java-клиент е поставена

Стъпка 5) Сега щракнете с десния бутон върху „pom.xml“ в левия прозорец на Explorer или върху XML кода за „Appium„Тестване“ на проекта. След това щракнете върху опцията „Изпълни като >> Maven Clean“, както е показано по-долу.

Eclipse Подменю „Изпълни като“ с маркирана опция „Maven Clean“

Докато работите, можете да видите всички jar файлове, свързани с Maven, и съобщение за успех, както е показано в конзолния изход по-долу. Ето как се изпълнява Appium Java тест за зависимости на клиент от Maven в среда, конфигурирана от Maven.

Eclipse конзолата, показваща изтеглените Maven jar файлове и съобщението за успешно изграждане

Как да тичам Appium Тестове с Maven команди

- Eclipse Менюто е удобно, но същата компилация трябва да се изпълнява без надзор на сървър за компилация и там командният ред е единствената опция. Отворете терминал в папката, която съдържа pom.xml и използвайте тези команди.

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

Всеки от тях има различна задача:

  • mvn чист изтрива target директорията, така че нищо нестаро да оцелее в следващата компилация. Това е командата Eclipse ръководство за горните тригери.
  • mvn чист тест компилира проекта и изпълнява тестовите класове. Плъгинът Maven Surefire ги извлича автоматично от src/test/java, използвайки шаблоните за включване по подразбиране Test*.java, *Test.java, *Tests.java намлява *TestCase.java.
  • mvn чиста инсталация изпълнява тестовете и след това поставя пакетирания артефакт във вашето локално хранилище, така че друг проект да може да разчита на него.
  • mvn тест -Dtest=ТестЗаВход стеснява изпълнението до един клас, докато отстранявате грешки.

Две неща привличат вниманието на хората. Първо, Appium Сървърът трябва вече да работи и устройство или емулатор трябва да са свързани, преди да започне компилацията, защото Maven не стартира нито едното, нито другото — проверете устройството с ADB първо проверете. Второ, резултатите се записват в target/surefire-reports, което е папката, която CI задачата трябва да архивира. Ръководство за употреба на Surefire разглежда подробно опциите за конфигурация и същите команди управляват Appium апартамент от Jenkins.

Общ Appium Грешки в Maven и как да ги поправим

Повечето неуспехи в Appium Проблемите с настройката на Maven се дължат на няколко повтарящи се причини, а не на самия тестов код. Таблицата по-долу съпоставя всеки симптом с обичайното му решение.

симптом Вероятна причина Фиксирайте
Не можаха да се разрешат зависимостите за io.appium:java-client Грешен низ за версия или няма мрежов достъп до Maven Central Копирайте координатите директно от списъка в Maven Central и стартирайте отново компилацията
NoSuchMethodError или NoClassDefFoundError от Selenium клас Версиите на java-client и selenium-java са несъвместими Съответства на Selenium версия в диапазона, деклариран от версията на Java-клиента
Тестовете се компилират, но не се изпълняват Тестовите класове се намират в src/main/java или името на класа не съответства на шаблон за включване на Surefire. Преместете ги в src/test/java и наименувайте класа така, че да завършва на Test
Връзката е отказана на порт 4723 - Appium сървърът не работи Стартирайте Appium сървър преди изграждането
Невалидна или неподдържана възможност Използвани стари имена на възможности със съвременен драйвер Revвижте текущото желани възможности за вашата платформа
Неподдържана основна версия на файла с клас JDK, използван от Maven, се различава от нивото на компилатора в pom.xml. Подравнете свойствата на maven.compiler.source и target с инсталираните от вас JDK

Когато компилацията е неуспешна, прочетете първата грешка, която Maven отпечатва, а не последната. По-късните редове обикновено са последствия от първия липсващ артефакт.

Въпроси и Отговори

Вземете най-новата версия, посочена в Maven Central, а не версия, копирана от стар урок. Към момента на писане това е 10.1.1, която очаква Selenium 4.42.0 или по-нова версия в classpath.

Моделите за машинно обучение поправят локаторите на елементи след промяна в потребителския интерфейс, групират дублиращи се грешки на различни устройства и предвиждат кои тестове е вероятно да се провалят, така че по-кратко изпълнение на Maven покрива рисковата област.

Copilot допълва елементите groupId, artifactId и version от едноредов коментар. Често предлага номер на остаряла версия, така че проверете координатите в Maven Central, преди да запишете файла.

Не е точно така. Java-клиентът декларира Selenium артефактите транзитивно. Много екипи все още изрично закрепват selenium-java, така че версията да е видима и надстройките да са умишлени, а не случайни.

И двете разрешават едни и същи артефакти. Maven използва декларативен XML и е подходящ за екипи, които искат фиксиран жизнен цикъл. Gradle скриптове в Groovy или Kotlin и изгражда постепенно, което помага при големи многомодулни хранилища.

В src/test/java. Surefire сканира тази директория само по време на компилация, така че клас, оставен в src/main/java, се компилира, но никога не се изпълнява, което изглежда като тихо преминаващ пакет.

Не. Maven разрешава jar файлове и изпълнява само тестове. Стартирайте Appium сървър и първо свържете устройство или емулатор или стартирайте сървъра от метода за тестова настройка или стъпка от CI конвейер.

Проверете хранилището, стартирайте Appium сървър и устройство, след което изпълнете mvn clean test. ArchiИзползваме target/surefire-reports като артефакт за изграждане, така че грешките да останат четими след унищожаването на агента.

Обобщете тази публикация с: