Как заставить селенид открыть сессию к Selenoid и запустить в нем мобильное приложение?

Вторую неделю бьюсь с проблемой запустить мобильные тесты на Селеноиде.
Первое что пытался сделать, это определить класс SelenoidMobileDriver описать в нем

public WebDriver createDriver(@Nonnull Capabilities capabilities) {

        initPackageAndActivity();

        DesiredCapabilities device = new DesiredCapabilities();
//        device.setCapability("browserName", "android");
        device.setCapability("version", "10.1");
        device.setCapability("deviceName", "android");
        device.setCapability("appPackage", APP_PACKAGE);
        device.setCapability("appActivity", APP_ACTIVITY);
        device.setCapability("app", APP);

        Map<String, Object> selenoidOptions = new HashMap<>();
//        selenoidOptions.put("enableVNC", true);
//        selenoidOptions.put("enableVideo", false);
        selenoidOptions.put("enableLog", true);
        selenoidOptions.put("timeZone", "Europe/Moscow");
        selenoidOptions.put("sessionTimeout", "1m");

//        Configuration.browserSize = null;
        Configuration.browserCapabilities.setCapability("selenoid:options", selenoidOptions);

        driver = new RemoteWebDriver(getUrl(), device);

        return driver;
    }

В getUrl() получаю адрес адрес Селеноида у меня он http://10.0.15.43:4444/wd/hub

Этот класс указать в Configuration.browser = SelenoidMobileDriver.class.getName();

Селеноид открывает сессию, но не стартует эмулятор

если пойти другим путем и не использовать Configuration а просто

final DesiredCapabilities device = new DesiredCapabilities();
        device.setCapability("deviceName", "android");
        device.setCapability("version", "10.1");
        device.setCapability("app", "https://api.selcdn.ru/v1/SEL_162997/soft/Retail-apk/ru.vkusvill-2.53.30-lollipop-release.apk"); //APK from https://www.apkmirror.com/apk/androbaby/2048/2048-2-1-release/2048-2-1-android-apk-download/download/
        device.setCapability("appPackage", "ru.vkusvill");
        device.setCapability("appActivity", "ru.vkusvill.ui.screens.splash.SplashActivity");
        device.setCapability("enableVNC", true);
//        device.setCapability("enableVideo", true); // Uncomment this to record video

        RemoteWebDriver driver = new RemoteWebDriver(new URL(
                "http://10.0.15.43:4444/wd/hub" //Replace with correct host and port
        ), device);

то селеноид откроет сессию

Помогите разобраться, как заставить селенид передать параметры какое приложение запустить?

Что-то я не понимаю, как вы пытаетесь Appium’ные тесты запустить, через обычный WebDriver? Может вам сюда?

1 лайк

Нет, я думаю, что я по адресу, но за ссылку спасибо, я там был ранее и не нашел ответ на свой вопрос.

Я немного сдвинулся в процессе и имею чуть другую ошибку

При использовании в проекте зависимостей

    testImplementation(
            "com.codeborne:selenide:5.25.0",
            "io.appium:java-client:7.6.0",

у меня получилось создать сессию к Селеноду, поднять там контейнер с Андройдом и пройти тест

в логах я вижу


что капабилитиес заполнены и все хорошо

при использовании в проекте более свежих зависимостей

    testImplementation(
            "com.codeborne:selenide:6.10.2",
            "io.appium:java-client:8.3.0",

Я получаю ошибку тк похоже не передаются капабилитиес

ЗЫ. Призываю высшие силы в лице Андрея Солнцева!!!

А я без понятия, никогда не пробовал запускать андроид в селеноиде. :slight_smile:
Надо пробовать…

Мне кажется, capabilities вполне себе передаются:

То, что в следующие строке они пустые - это, кажется, незначительный баг селениума. Но он их просто не пишет на экране, то в предыдущей строке-то пишет.

Мне стоит надеяться, что вы попробуете? Я пока откатился на версию селенида 5.25.1 и аппиум клиент 7.6.0

Если нужно я могу предоставить доступ к своему окружению для проведения экспериментов
Мой телеграм @fenixnow

Так я ж говорю, я попробовал и вижу, что capabilities передаются. А дальше уже селеноид не смог создать сессию. Тут уж нажо сам селеноид клпать.

Вопрос решен доработкой на стороне Selenoid. Доработка вошла в последний образ

1 лайк