Это привязки языка Java для написания тестов Appium, соответствующих протоколу WebDriver.
Начиная с версии 9, клиент поддерживает только Java 11 и выше. Следуйте Руководству по переходу с версии 8 на версию 9, чтобы упростить процесс миграции.
Начиная с версии 8, Appium Java Client претерпел несколько серьезных изменений, которые могли потребовать обновления вашего клиентского кода. Обязательно следуйте Руководству по переходу с версии 7 на версию 8, чтобы упростить процесс миграции.
Добавьте в pom.xml следующее:
< dependency >
< groupId >io.appium</ groupId >
< artifactId >java-client</ artifactId >
< version >${version.you.require}</ version >
< scope >test</ scope >
</ dependency >
Добавьте в build.gradle следующее:
dependencies {
testImplementation ' io.appium:java-client:${version.you.require} '
}
Клиентский проект Java доступен для использования даже до того, как он будет официально опубликован в Maven Central. Обратитесь к сайту jitpack.io.
Добавьте в pom.xml следующее:
< repositories >
< repository >
< id >jitpack.io</ id >
< url >https://jitpack.io</ url >
</ repository >
</ repositories >
Добавьте зависимость:
< dependency >
< groupId >com.github.appium</ groupId >
< artifactId >java-client</ artifactId >
< version >latest commit ID from master branch</ version >
</ dependency >
Добавьте репозиторий JitPack в файл сборки. Добавьте его в свой корневой build.gradle в конце репозитория:
allprojects {
repositories {
// ...
maven { url ' https://jitpack.io ' }
}
}
Добавьте зависимость:
dependencies {
implementation ' com.github.appium:java-client:latest commit id from master branch '
}
Java-клиент Appium | Селен клиент |
---|---|
9.2.1 (известные проблемы: #2145, #2146), 9.2.2 , 9.2.3 , 9.3.0 | 4.19.0 , 4.19.1 , 4.20.0 , 4.21.0 , 4.22.0 , 4.23.0 |
9.1.0 , 9.2.0 | 4.17.0 , 4.18.0 , 4.18.1 |
9.0.0 | 4.14.1 , 4.15.0 , 4.16.0 (частично поврежден), 4.16.1 |
Н/Д | 4.14.0 |
8.5.0 , 8.5.1 , 8.6.0 | 4.9.1 , 4.10.0 , 4.11.0 , 4.12.0 , 4.12.1 (известная проблема: #2004), 4.13.0 |
8.4.0 | 4.8.2 , 4.8.3 , 4.9.0 |
8.3.0 | 4.7.0 , 4.7.1 , 4.7.2 , 4.8.0 , 4.8.1 |
8.2.1 | 4.5.0 , 4.5.1 , 4.5.2 , 4.5.3 , 4.6.0 |
Клиент Selenium не поддерживает семантическое управление версиями, поэтому критические изменения могут быть внесены даже в патчи, что требует от команды Appium обновления клиента Java в ответ.
Java-клиент Appium объявляет зависимости Selenium, используя открытый диапазон версий, который по-разному обрабатывается разными инструментами сборки. Иногда пользователи могут захотеть закрепить используемые зависимости Selenium по разным причинам. Следуйте статье «Управление транзитивными зависимостями», чтобы получить дополнительную информацию об установке фиксированной версии Selenium для вашей среды тестирования Java.
Java-клиент Appium имеет специальные классы для поддержки следующих драйверов Appium:
Для автоматизации других платформ, не перечисленных выше, вы можете использовать AppiumDriver или его собственные производные.
Java-клиент Appium построен на основе Selenium и реализует те же интерфейсы, что и базовый RemoteWebDriver. Однако Selenium lib в основном ориентирован на автоматизацию веб-браузера, в то время как Appium универсален и охватывает широкий спектр возможных платформ, например, мобильные и настольные операционные системы, устройства IOT и т. д. Таким образом, базовый класс AppiumDriver
в этом пакете расширяет RemoteWebDriver
дополнительными функциями. и делает его более гибким, поэтому он не так строго ориентирован на операции, связанные с веб-браузером.
Java-клиент Appium предоставляет специальный класс для управления выполнением сервера Appium. Класс — AppiumDriverLocalService. Он позволяет запускать и проверять сервер Appium локально из кода тестовой среды и предоставляет несколько удобных ярлыков. Услугу можно использовать следующим образом:
AppiumDriverLocalService service = AppiumDriverLocalService . buildDefaultService ();
service . start ();
try {
// do stuff with drivers
} finally {
service . stop ();
}
Вы можете настроить поведение службы, например предоставить собственные аргументы командной строки или изменить пути к исполняемым файлам сервера с помощью AppiumServiceBuilder.
Примечание
AppiumDriverLocalService не поддерживает управление сервером на нелокальных хостах.
UiAutomator2Options options = new UiAutomator2Options ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.apk" );
AndroidDriver driver = new AndroidDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . xpath ( "//Button" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
XCUITestOptions options = new XCUITestOptions ()
. setUdid ( "123456" )
. setApp ( "/home/myapp.ipa" );
IOSDriver driver = new IOSDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . accessibilityId ( "myId" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
BaseOptions options = new BaseOptions ()
. setPlatformName ( "myplatform" )
. setAutomationName ( "mydriver" )
. amend ( "mycapability1" , "capvalue1" )
. amend ( "mycapability2" , "capvalue2" );
AppiumDriver driver = new AppiumDriver (
// The default URL in Appium 1 is http://127.0.0.1:4723/wd/hub
new URL ( "http://127.0.0.1:4723" ), options
);
try {
WebElement el = driver . findElement ( AppiumBy . className ( "myClass" ));
el . click ();
driver . getPageSource ();
} finally {
driver . quit ();
}
Проверьте файлы README соответствующего драйвера, чтобы узнать список поддерживаемых им возможностей и функций.
Вы можете найти еще много примеров кода, проверив модульные и интеграционные тесты клиента.
Клиент Appium Java использует рефлексивный доступ к закрытым членам других модулей, чтобы обеспечить правильную функциональность некоторых функций, таких как модель объектов страницы. Если вы получаете исключение во время выполнения и InaccessibleObjectException
присутствует в трассировке стека, а ваша среда выполнения Java имеет версию 16 или выше, рассмотрите следующее руководство Oracle и/или проверьте существующие проблемы на предмет возможных решений. Идея заключалась бы в том, чтобы явно разрешить доступ для определенных модулей, используя аргументы командной строки --add-exports/--add-opens
.
Другим возможным, но нерекомендуемым решением является понижение версии Java до версии 15 или ниже.
Такие проблемы обычно возникают, когда сервер Appium запускается непосредственно из кода вашей платформы, а не запускается отдельно с помощью сценария или вручную. В зависимости от способа запуска серверного процесса он может наследовать или не наследовать текущую активную среду оболочки. Вот почему вы все равно можете получать ошибки о наличии переменных, даже если эти переменные определены для вашего интерпретатора командной строки. Опять же, здесь не существует универсального решения, поскольку существует множество способов запустить новый серверный процесс. Рассмотрите возможность просмотра документа «Устранение неполадок среды Appium», чтобы получить дополнительную информацию о том, как отлаживать и устранять проблемы среды процесса.
Посетите CHANGELOG.md, чтобы увидеть полный список изменений между версиями.
Запустите тест, используя
gradle clean -Dtest.single=тест IOSAlertTest