@AyzatAshrafullin

Почему нет изображения при включенном VNC в Selenoid?

# Инструкция

## ссылки
Ссылка удалена модератором.
установка окружения
описание для линукса или винды с WSL

1. установить докер
2. Открываем WSL (дальше буду назвать терминалом) или терминал
3. скачиваем утилиту (в видео selenoid 1.3.4 и selenoid 1.3.2)

wget -O cm https://github.com/aerokube/cm/releases/download/1.8.5/cm_linux_amd64


4. даем разрешение на исполнение
chmod +x ./cm
5. Запускаем контейнер Селенойда с зависимостями, он подкачает еще немного имеджов

./cm selenoid start --vnc

6. запускаем веб вью селенойда
./cm selenoid-ui start

---
## сборка и запуск тестов
1. убедимся, что установлены jdk указанной версии
2. переходим на selenoid-ui по localhost:8080
3. переходим в раздел CAPABILITIES, выбираем браузер в котором мы будем выполнять тесты
4. в списке языков выбираем Java
5. Данные проекта заносим в WebDriverConfig
6. в DriverActions и DriverManager указываем RemoteWebDriver вместо WebDriver
7. Запускаем тесты
mvn test

класс вебдрайвера DriverManager
package org.JRub.driver;
import org.openqa.selenium.Dimension;
import org.openqa.selenium.WebDriver;
import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.net.MalformedURLException;
import java.net.URL;

public class DriverManager {

//    private static WebDriver driver;
    private static RemoteWebDriver driver;

    /*******************************************************************************************************************
     **************************************************** Методы класса ************************************************
     ******************************************************************************************************************/

    /**
     * Устанавливает настройки веб-драйвера
     */
    private static void setDriver() throws MalformedURLException {

        driver = new RemoteWebDriver(new URL("http://localhost:4444/wd/hub"), WebDriverConfig.configChromeMashup());
        driver.manage().window().setSize(new Dimension(1920, 1080));
    }

    /**
     * Получает экзепляр к веб-драйверу
     *
     * @return экземпляр веб-драйвера
     */
    public static WebDriver getDriver() throws MalformedURLException {
        if (driver == null) {
            setDriver();
        }
        return driver;
    }

    public static void closeWebDriver() {
        driver.close();
        driver.quit();
    }
}


класс WebDriverConfig
package org.JRub.driver;


import io.github.bonigarcia.wdm.WebDriverManager;
import org.openqa.selenium.chrome.ChromeOptions;
import org.openqa.selenium.logging.LogType;
import org.openqa.selenium.logging.LoggingPreferences;
import org.openqa.selenium.remote.BrowserType;
import org.openqa.selenium.remote.CapabilityType;
import org.openqa.selenium.remote.RemoteWebDriver;

import java.net.MalformedURLException;
import java.net.URL;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.logging.Level;

public class WebDriverConfig {

    public static ChromeOptions configChromeMashup() throws MalformedURLException {

        ChromeOptions options = new ChromeOptions();
        options.setCapability("browserVersion", "115.0");

        options.setCapability("selenoid:options", new HashMap<String, Object>() {{
            /* How to add test badge */
            put("name", "Test badge...");

            /* How to set session timeout */
            put("sessionTimeout", "15m");

            /* How to set timezone */
            put("env", new ArrayList<String>() {{
                add("TZ=UTC");
            }});

            /* How to add "trash" button */
            put("labels", new HashMap<String, Object>() {{
                put("manual", "true");
            }});

            /* How to enable video recording */
            put("enableVideo", true);

            options.addArguments("--headless=new");
            options.setCapability("enableVNC", true);
        }});


        String downloadFilepath = "C:\\AutoTestDownloads";
        HashMap<String, Object> chromePrefs = new HashMap<String, Object>();
        chromePrefs.put("profile.default_content_settings.popups", 0);
        chromePrefs.put("download.default_directory", downloadFilepath);
        options.setExperimentalOption("prefs", chromePrefs);


        // endregion


        // region на полный экран

//        options.addArguments("--start-maximized");

        // endregion

        // region для обхода невозможности не безопасного подключения

        options.addArguments("--ignore-ssl-errors=yes");
        options.addArguments("--ignore-certificate-errors");
        options.addArguments("--remote-allow-origins=*");

        // endregion

        options.setCapability(CapabilityType.BROWSER_NAME, BrowserType.CHROME);
        options.setCapability(CapabilityType.ACCEPT_SSL_CERTS, true);



        // region Логирование
        LoggingPreferences logPrefs = new LoggingPreferences();
        logPrefs.enable(LogType.BROWSER, Level.ALL);
        options.setCapability(CapabilityType.LOGGING_PREFS, logPrefs);


        options.setCapability("enableVNC", true);
        options.setCapability("screenResolution", "1920x1080x24");

        return options;
    }

}


какой-то кубик, а браузера нет. Если создать сессию вручную, все норм работает
64cb9f2737f81861363428.jpeg
  • Вопрос задан
  • 330 просмотров
Решения вопроса 1
@AyzatAshrafullin Автор вопроса
в методе WebDriverConfig().configChromeMashup() необходимо использовать DesiredCapabilities(), а не ChromeOptions(), даже если в документации написано ChromeOptions

Скриншот фрагмента кода удалён модератором.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы