-
Notifications
You must be signed in to change notification settings - Fork 79
20. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
Browserstack — индийская облачная платформа для мобильного тестирования и веб-тестирования. Сервис предоставляет удаленный доступ к мобильным гаджетам на Android и iOS. Browserstack платный, но есть пробные тарифы, которых должно хватить для базовых задач.
На главной странице нас интересуют два последних раздела. App Live предназначен для запуска устройства и ручного взаимодействия, а App Automate для автоматизации.
Нажмем App Live и попробуем запустить удаленное Android-устройство в браузере. На странице регистрации нажимаем Get started free и проходим пошаговую процедуру регистрации. Если вы работаете с macOS, то важно учесть, что сервис не работает с браузером Safari. Поэтому следует перейти в Chrome или Firefox.
Таким образом выглядит страница выбора устройства. Для запуска доступна коллекция гаджетов на базе Android и iOS. Выбираем смартфон на Android и в окне запустится сам гаджет. С ним можно будет взаимодействовать как с физическим устройством.
Если перейти в раздел Inspect и нажать кнопку Play, то запустится режим инспектора элементов и можно будет изучить окно приложения более детально, получив подробную информацию о каждом элементе. Также можно получить имена локаторов.
- Создаем репозиторий проекта, добавляем
.gitignore
и открываем репозиторий на своем компьютере с помощью IDEA. - Переходим на главную страницу Browserstack и выбираем карточку App Automate.
- Нажимаем Get Started Free.
- Выбираем Java JUnit.
Нас встретит краткая документация по развертыванию проекта на платформе.
Если файл build.gradle
уже создан в проекте, то редактируем его, если файла нет, то создаем. Файл должен выглядеть следующим образом:
plugins {
id 'java-library'
id "io.qameta.allure" version "2.9.6"
}
repositories {
mavenCentral()
}
def allureVersion = "2.17.3",
selenideVersion = "6.5.2",
appiumVersion = "8.0.0",
// appiumVersion = "7.6.0",
restAssured = "4.5.1",
junitVersion = "5.8.2",
slf4jVersion = "1.7.32"
allure {
report {
version.set(allureVersion)
}
adapter {
aspectjWeaver.set(true)
frameworks {
junit5 {
adapterVersion.set(allureVersion)
}
}
}
}
dependencies {
testImplementation(
"com.codeborne:selenide:$selenideVersion",
"io.qameta.allure:allure-selenide:$allureVersion",
"io.appium:java-client:$appiumVersion",
"io.rest-assured:rest-assured:$restAssured",
"org.junit.jupiter:junit-jupiter:$junitVersion",
"org.slf4j:slf4j-simple:$slf4jVersion"
)
}
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
}
tasks.withType(Test) {
systemProperties(System.getProperties())
useJUnitPlatform()
testLogging {
lifecycle {
events "started", "skipped", "failed", "standard_error", "standard_out"
exceptionFormat "short"
}
}
}
task android(type: Test) {
useJUnitPlatform {
includeTags 'android'
}
}
- Создаем класс теста в проекте через IDEA
- Тело теста из примера должно выглядеть следующим образом:
public class AndroidSampleTest {
@Test
void searchTest() throws MalformedURLException, InterruptedException {
DesiredCapabilities caps = new DesiredCapabilities();
// Set your access credentials
caps.setCapability("browserstack.user", "autotestscloud_qAejV5");
caps.setCapability("browserstack.key", "DkvhzD6ZSLTsxYERedAR");
// Set URL of the application under test
caps.setCapability("app", "bs://c700ce60cf13ae8ed97705a55b8e022f13c5827c");
// Specify device and os_version for testing
caps.setCapability("device", "Google Pixel 3");
caps.setCapability("os_version", "9.0");
// Set other BrowserStack capabilities
caps.setCapability("project", "First Java Project");
caps.setCapability("build", "browserstack-build-1");
caps.setCapability("name", "first_test");
// Initialise the remote Webdriver using BrowserStack remote URL
// and desired capabilities defined above
AndroidDriver<AndroidElement> driver = new AndroidDriver<AndroidElement>(
new URL("http://hub.browserstack.com/wd/hub"), caps);
// new URL("http://hub-cloud.browserstack.com"), caps);
// Test case for the BrowserStack sample Android app.
// If you have uploaded your app, update the test case here.
AndroidElement searchElement = (AndroidElement) new WebDriverWait(driver, 30).until(
ExpectedConditions.elementToBeClickable(
MobileBy.AccessibilityId("Search Wikipedia")));
searchElement.click();
AndroidElement insertTextElement = (AndroidElement) new WebDriverWait(driver, 30).until(
ExpectedConditions.elementToBeClickable(
MobileBy.id("org.wikipedia.alpha:id/search_src_text")));
insertTextElement.sendKeys("BrowserStack");
Thread.sleep(5000);
List<AndroidElement> allProductsName = driver.findElementsByClassName(
"android.widget.TextView");
assert(allProductsName.size() > 0);
// Invoke driver.quit() after the test is done to indicate that the test is completed.
driver.quit();
}
}
- Запускаем тест из IDEA и если все было выполнено правильно, то процесс выполнения и результаты отобразятся в Browserstack.
✔️ Сайт
✔️ Чат в Telegram
✔️ Канал в Telegarm
Содержание
Командная строка
Кодировка UTF-8 в Java
Список полезных книг для автоматизаторов тестирования на языке Java
Список полезных книг для автоматизаторов тестирования на языке Python
Структура проекта
Github README.md
Java:
1. Вводное занятие. Сразу к практике.
2. Git. GitHub. Погружаемся.
3. Погружаемся в инструментарий и библиотеки
4. Основы Java
5. Продолжаем разрабатывать автотесты. PageObjects
6. JUnit 5
7. Allure Reports
8. Работа с файлами
9. Selenide #1
10. Jenkins. Создаем первую задачу
11. Управляем параметрами в коде и в Jenkins
12. Отправляем уведомления о результатах прохождения автотестов
13. Учимся быстро разрабатывать проекты для тестовых заданий
14. Selenoid
15. Библиотека Owner
16. REST API. Пишем автотесты с Rest assured
17. REST API. Декомпозируем UI тесты. Подключаем отчетность
18. REST API. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Allure TestOps
21. Переезд на собственную инфраструктуру Java
Python:
1. Вводное занятие. Сразу к практике!
2. Погружаемся в инструментарий и библиотеки
3. Git. GitHub. Погружаемся.
4. Основы Python
5. Selene #1
6. Основы Python. Часть II
7. Основы Python. Часть III
8. Page Object
9. Allure Reports
10. Работаем с файлами Python
11. Jenkins. Создаем первую задачу и управляем параметрами Python
12. Телеграм бот. Отправляем уведомления о результатах прохождения тестов
13. Pytest
14. Selenoid
15. Pytest. Часть II
16. Venv, Poetry и управление зависимостями проекта
17. REST API. Часть I. Пишем автотесты с Requests
18. REST API. Часть II. Продолжаем изучать
19. Мобильная автоматизация #1. Разрабатываем автотесты с Browserstack
20. Мобильная автоматизация #2. Разрабатываем автотесты с эмулятором Android устройства
21. Allure TestOps
22. Переезд на собственную инфраструктуру Python