Я новичок в автоматизации. Пишу автотесты на нативном приложении.
При прохождении теста одним устройством все работает корректно.
Но я хочу, чтобы во время теста было задействовано 2 и более устройств, которые будут работать распределенно.
>Пример:
Устройство 1 (пользователь 1)
Приложение запускается
Вход в приложение
Сообщение создается и отправляется пользователю 2
Устройство 2 (пользователь 2)
Запуск приложения
Вход в приложение
Проверка полученного сообщения от пользователя 1
Поскольку я новичок, то в моем понимании это должно происходить за один тест, чтобы не делать несколько зависимых друг от друга тестов, просто переключаться между драйверами (устройствами)
Теперь все делается в следующей иерархии:
Класс MobileDriver — в котором инициализируется драйвер
Класс тестируется
Вспомогательные классы — на задержки, ожидания и т.д.
А класс с логическими методами самих тестов
Если моя логика неверна или это невозможно сделать, пожалуйста, предложите более правильное решение этой проблемы
Я работаю в Idea
Java 8
Appium 1.14.0
Windows 10
public class MobileDriver {
public static AppiumDriver driver;
public static AppiumDriver driver2;
public void mobileDriver(String arg) throws MalformedURLException {
if (arg.equals("1")) {
emulatorDevice5554();
} else if (arg.equals("2")) {
emulatorDevice5556();
} else if (arg.equals("3")) {
realDevice();
} else if (arg.equals("4")) {
test2devices();
}
public void emulatorDevice5554() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
//desiredCapabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//desiredCapabilities.setCapability("deviceName", "Android Emulator");
desiredCapabilities.setCapability("deviceName", "emulator-5554");
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("platformVersion", "8.1.0");
desiredCapabilities.setCapability("systemPort", "8201");
//desiredCapabilities.setCapability("automationName", "Appium");
desiredCapabilities.setCapability("automationName", "UiAutomator2");
desiredCapabilities.setCapability("app", "C:/Users/Asus/IdeaProjects/iopayphonex/app/app.apk");
desiredCapabilities.setCapability("appPackage", "package");
desiredCapabilities.setCapability("appActivity", "Activity");
desiredCapabilities.setCapability("noReset", true);
//initialize mobileDriver
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
public void emulatorDevice5556() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
//desiredCapabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//desiredCapabilities.setCapability("deviceName", "Android Emulator");
desiredCapabilities.setCapability("deviceName", "emulator-5556");
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("platformVersion", "7.0");
desiredCapabilities.setCapability("systemPort", "8202");
//desiredCapabilities.setCapability("automationName", "Appium");
desiredCapabilities.setCapability("automationName", "UiAutomator2");
desiredCapabilities.setCapability("app", "C:/Users/Asus/IdeaProjects/iopayphonex/app/app.apk");
desiredCapabilities.setCapability("appPackage", "package");
desiredCapabilities.setCapability("appActivity", "Activity");
desiredCapabilities.setCapability("noReset", true);
//initialize mobileDriver
driver2 = new AndroidDriver(new URL("http://127.0.0.1:5000/wd/hub"), desiredCapabilities);
driver2.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
}
public abstract class Page {
public MobileDriver driver;
public WEBDriver chromeDriver;
}
public class CreateQuestionScreen extends Page {
public CreateQuestionScreen(MobileDriver driver) {
super.driver = driver;
}
public SwipesAndClicks swipesAndClicks = new SwipesAndClicks(driver);
public WaitsMobile waitsMobile = new WaitsMobile(driver);
public Randomizer randomizer = new Randomizer();
Logger logger = LoggerFactory.getLogger(ContinueScreen.class);
public void searchQuestion() {
waitsMobile.waitForElementAndClick(By.xpath(C.BTN_FORUM),
"element BTN_FORUM not found",
2);
logger.info("success click to BTN_FORUM element");
waitsMobile.waitForElementAndClick(By.xpath(C.CHOOSE_BUSINESS_CATEGORY),
"element CHOOSE_BUSINESS_CATEGORY not found",
2);
logger.info("success choose CHOOSE_BUSINESS_CATEGORY element");
try {
waitsMobile.waitForElementAndClick(By.xpath("//android.widget.TextView[@text='" + testQuestion + "']"),
"element" + testQuestion + "not found from try",
2);
logger.info("message '" + testQuestion + "' found");
} catch (NoSuchElementException e) {
System.out.println("element" + testQuestion + "not found from catch");
}
}
}
public class SendMessageToExpertTest extends utility.tested.Test {
public static MobileDriver driver;
public static SwipesAndClicks swipesAndClicks;
public static WaitsMobile waitsMobile;
public static ContinueScreen continueScreen;
public static SignInScreen signInScreen;
public static ProfileScreen profileScreen;
public static ExpertProfileScreen expertProfileScreen;
@BeforeClass
public static void setUp() throws MalformedURLException, InterruptedException {
driver = new MobileDriver();
continueScreen = new ContinueScreen(driver);
signInScreen = new SignInScreen(driver);
profileScreen = new ProfileScreen(driver);
waitsMobile = new WaitsMobile(driver);
driver.mobileDriver("1");
driver2.mobileDriver("2");
swipesAndClicks = new SwipesAndClicks(driver);
expertProfileScreen = new ExpertProfileScreen(driver);
continueScreen.clickContinueButton();
signInScreen.signInViaGoogle();
Thread.sleep(6000);
swipesAndClicks.clickToTips();
}
@Category(Regression.class)
@Test
public void sendMessageToExpertTest() throws Exception{
expertProfileScreen.sendMessageToExpert();
swipesAndClicks.clickToPinCode();
expertProfileScreen.checkMessage();
}
}
Подробнее здесь: https://stackoverflow.com/questions/575 ... -the-tests
Как переключаться между Android-устройствами во время тестов ⇐ Android
Форум для тех, кто программирует под Android
-
Anonymous
1720440219
Anonymous
Я новичок в автоматизации. Пишу автотесты на нативном приложении.
При прохождении теста одним устройством все работает корректно.
Но я хочу, чтобы во время теста было задействовано 2 и более устройств, которые будут работать распределенно.
>Пример:
Устройство 1 (пользователь 1)
Приложение запускается
Вход в приложение
Сообщение создается и отправляется пользователю 2
Устройство 2 (пользователь 2)
Запуск приложения
Вход в приложение
Проверка полученного сообщения от пользователя 1
Поскольку я новичок, то в моем понимании это должно происходить за один тест, чтобы не делать несколько зависимых друг от друга тестов, просто переключаться между драйверами (устройствами)
Теперь все делается в следующей иерархии:
Класс MobileDriver — в котором инициализируется драйвер
Класс тестируется
Вспомогательные классы — на задержки, ожидания и т.д.
А класс с логическими методами самих тестов
Если моя логика неверна или это невозможно сделать, пожалуйста, предложите более правильное решение этой проблемы
Я работаю в Idea
Java 8
Appium 1.14.0
Windows 10
public class MobileDriver {
public static AppiumDriver driver;
public static AppiumDriver driver2;
public void mobileDriver(String arg) throws MalformedURLException {
if (arg.equals("1")) {
emulatorDevice5554();
} else if (arg.equals("2")) {
emulatorDevice5556();
} else if (arg.equals("3")) {
realDevice();
} else if (arg.equals("4")) {
test2devices();
}
public void emulatorDevice5554() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
//desiredCapabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//desiredCapabilities.setCapability("deviceName", "Android Emulator");
desiredCapabilities.setCapability("deviceName", "emulator-5554");
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("platformVersion", "8.1.0");
desiredCapabilities.setCapability("systemPort", "8201");
//desiredCapabilities.setCapability("automationName", "Appium");
desiredCapabilities.setCapability("automationName", "UiAutomator2");
desiredCapabilities.setCapability("app", "C:/Users/Asus/IdeaProjects/iopayphonex/app/app.apk");
desiredCapabilities.setCapability("appPackage", "package");
desiredCapabilities.setCapability("appActivity", "Activity");
desiredCapabilities.setCapability("noReset", true);
//initialize mobileDriver
driver = new AndroidDriver(new URL("http://127.0.0.1:4723/wd/hub"), desiredCapabilities);
driver.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
public void emulatorDevice5556() throws MalformedURLException {
DesiredCapabilities desiredCapabilities = new DesiredCapabilities();
//desiredCapabilities.setCapability(CapabilityType.BROWSER_NAME, "");
//desiredCapabilities.setCapability("deviceName", "Android Emulator");
desiredCapabilities.setCapability("deviceName", "emulator-5556");
desiredCapabilities.setCapability("platformName", "Android");
desiredCapabilities.setCapability("platformVersion", "7.0");
desiredCapabilities.setCapability("systemPort", "8202");
//desiredCapabilities.setCapability("automationName", "Appium");
desiredCapabilities.setCapability("automationName", "UiAutomator2");
desiredCapabilities.setCapability("app", "C:/Users/Asus/IdeaProjects/iopayphonex/app/app.apk");
desiredCapabilities.setCapability("appPackage", "package");
desiredCapabilities.setCapability("appActivity", "Activity");
desiredCapabilities.setCapability("noReset", true);
//initialize mobileDriver
driver2 = new AndroidDriver(new URL("http://127.0.0.1:5000/wd/hub"), desiredCapabilities);
driver2.manage().timeouts().implicitlyWait(60, TimeUnit.SECONDS);
}
}
public abstract class Page {
public MobileDriver driver;
public WEBDriver chromeDriver;
}
public class CreateQuestionScreen extends Page {
public CreateQuestionScreen(MobileDriver driver) {
super.driver = driver;
}
public SwipesAndClicks swipesAndClicks = new SwipesAndClicks(driver);
public WaitsMobile waitsMobile = new WaitsMobile(driver);
public Randomizer randomizer = new Randomizer();
Logger logger = LoggerFactory.getLogger(ContinueScreen.class);
public void searchQuestion() {
waitsMobile.waitForElementAndClick(By.xpath(C.BTN_FORUM),
"element BTN_FORUM not found",
2);
logger.info("success click to BTN_FORUM element");
waitsMobile.waitForElementAndClick(By.xpath(C.CHOOSE_BUSINESS_CATEGORY),
"element CHOOSE_BUSINESS_CATEGORY not found",
2);
logger.info("success choose CHOOSE_BUSINESS_CATEGORY element");
try {
waitsMobile.waitForElementAndClick(By.xpath("//android.widget.TextView[@text='" + testQuestion + "']"),
"element" + testQuestion + "not found from try",
2);
logger.info("message '" + testQuestion + "' found");
} catch (NoSuchElementException e) {
System.out.println("element" + testQuestion + "not found from catch");
}
}
}
public class SendMessageToExpertTest extends utility.tested.Test {
public static MobileDriver driver;
public static SwipesAndClicks swipesAndClicks;
public static WaitsMobile waitsMobile;
public static ContinueScreen continueScreen;
public static SignInScreen signInScreen;
public static ProfileScreen profileScreen;
public static ExpertProfileScreen expertProfileScreen;
@BeforeClass
public static void setUp() throws MalformedURLException, InterruptedException {
driver = new MobileDriver();
continueScreen = new ContinueScreen(driver);
signInScreen = new SignInScreen(driver);
profileScreen = new ProfileScreen(driver);
waitsMobile = new WaitsMobile(driver);
driver.mobileDriver("1");
driver2.mobileDriver("2");
swipesAndClicks = new SwipesAndClicks(driver);
expertProfileScreen = new ExpertProfileScreen(driver);
continueScreen.clickContinueButton();
signInScreen.signInViaGoogle();
Thread.sleep(6000);
swipesAndClicks.clickToTips();
}
@Category(Regression.class)
@Test
public void sendMessageToExpertTest() throws Exception{
expertProfileScreen.sendMessageToExpert();
swipesAndClicks.clickToPinCode();
expertProfileScreen.checkMessage();
}
}
Подробнее здесь: [url]https://stackoverflow.com/questions/57535968/how-to-switch-between-android-devices-during-the-tests[/url]
Ответить
1 сообщение
• Страница 1 из 1
Перейти
- Кемерово-IT
- ↳ Javascript
- ↳ C#
- ↳ JAVA
- ↳ Elasticsearch aggregation
- ↳ Python
- ↳ Php
- ↳ Android
- ↳ Html
- ↳ Jquery
- ↳ C++
- ↳ IOS
- ↳ CSS
- ↳ Excel
- ↳ Linux
- ↳ Apache
- ↳ MySql
- Детский мир
- Для души
- ↳ Музыкальные инструменты даром
- ↳ Печатная продукция даром
- Внешняя красота и здоровье
- ↳ Одежда и обувь для взрослых даром
- ↳ Товары для здоровья
- ↳ Физкультура и спорт
- Техника - даром!
- ↳ Автомобилистам
- ↳ Компьютерная техника
- ↳ Плиты: газовые и электрические
- ↳ Холодильники
- ↳ Стиральные машины
- ↳ Телевизоры
- ↳ Телефоны, смартфоны, плашеты
- ↳ Швейные машинки
- ↳ Прочая электроника и техника
- ↳ Фототехника
- Ремонт и интерьер
- ↳ Стройматериалы, инструмент
- ↳ Мебель и предметы интерьера даром
- ↳ Cантехника
- Другие темы
- ↳ Разное даром
- ↳ Давай меняться!
- ↳ Отдам\возьму за копеечку
- ↳ Работа и подработка в Кемерове
- ↳ Давай с тобой поговорим...
Мобильная версия