мы создали среду для поддержки как настольных, так и мобильных устройств. платформы, использующие более низкий технологический стек
Selenium webdriver, appium, Java-клиент, testNG, allure, Java 17
но я сталкиваюсь с проблемами при запуске тестов в параллельно, только один тест запускается в настольном браузере, остальные тесты открываются на мобильном устройстве, но он находится в состоянии ожидания без запуска тестов
baseTests.java
Код: Выделить всё
Boolean isMobile= (Boolean) deviceInfo.get("isMobile");
Boolean isHeadLess = (Boolean) deviceInfo.get("isHeadless");
if (Objects.isNull(DriverManager.getDriver())) {
if (isMobile) {
logger.info("****** Started appium server:");
serverManager.startServer();
deviceName = deviceInfo.getString("devicename");
String udid = deviceInfo.getString("udid");
String PlatformVersion = deviceInfo.getString("platformVersion");
Boolean isEmulator = (Boolean) deviceInfo.get("isEmulator");URL url = новый ServerManager().getServer().getUrl();
Код: Выделить всё
RemoteWebDriver driver=DriverFactory.initializeMobileDriver(MobilePlatformName.valueOf(platformType.toUpperCase()), deviceName, udid, isEmulator, isHeadLess,browserName, url);
RemoteWebDriver driver=DriverFactory.initializeWebDriver(WebBrowserName.valueOf(browserName.toUpperCase()), isHeadLess);
Код: Выделить всё
}
}
here i am using 'RemoteWebDriver' to refer both selenium webdriver and appium driver
DriverManager.java
private static final ThreadLocal threadLocalDriver = new ThreadLocal();
public static synchronized RemoteWebDriver getDriver() {
return threadLocalDriver.get();
}
public static synchronized void setAppiumDriver(RemoteWebDriver driver) {
if (Objects.nonNull(driver)) {
threadLocalDriver.set(driver);
}
}
public static synchronized void unload() {
threadLocalDriver.remove();
}
публичный класс SearchTest расширяет BaseTest{
public test(){
driver= DriverManager.getDriver();
if (PlatformUtils.isMobile(driver)) {
googleSearch( )
Иначе{
googleSearch()
}
Если я использую
Код: Выделить всё
if (PlatformUtils.isMobile(driver)) {
googleSearch()
Else{
googleSearch()
}
Если я просто использую
googleSearch()< /p>
Тогда откроются и настольный, и мобильный браузер, но на настольном компьютере запустится только один тест, а мобильные тесты просто останутся без движения.
Правильно ли использовать Remotewedriver для ссылки как на веб-драйвер Selenium, так и на драйвер Appium?
Если я использую описанный выше способ, чтобы я мог использовать общий драйвер и общий код для тестов вместо использования разных драйверов Appium и драйвера Selenium отдельно
Может ли кто-нибудь помочь мне найти правильный подход для работы как с мобильными устройствами, так и с настольными компьютерами (ПК)?
Подробнее здесь: https://stackoverflow.com/questions/782 ... le-browser