Как переключаться между Android-устройствами во время тестовAndroid

Форум для тех, кто программирует под Android
Ответить
Anonymous
 Как переключаться между Android-устройствами во время тестов

Сообщение 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();

}

}


Подробнее здесь: https://stackoverflow.com/questions/575 ... -the-tests
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «Android»