Selenide c proxy, не получается получить прокси от Selenide

Проблема:
Не могу стартануть прокси Selenide

Я попытался сделать
по примеру из статьи Как получить сетевые запросы с помощью прокси

У меня не получилось
Падает на получении прокси с NullPointerException

Код

 void setUp(){
        Configuration.timeout = 15000;
        Configuration.screenshots = false;
        Configuration.savePageSource = false;
        Configuration.headless = false;
        Configuration.proxyEnabled = true;

        
        DesiredCapabilities capabilities = new DesiredCapabilities();
        capabilities.setCapability( "browserName", "chrome");
        WebDriverManager.chromedriver().setup();
        
        ChromeOptions chromeOptions = new ChromeOptions();
        var chrome =  new ChromeDriver(chromeOptions.merge(capabilities));
        WebDriverRunner.setWebDriver(chrome);
        open();
          BrowserUpProxy bmp = WebDriverRunner.getSelenideProxy().getProxy();
        // запоминать тело запросов (по умолчанию тело не запоминается, ибо может быть большим)
        bmp.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
        // запоминать как запросы, так и ответы
        bmp.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
        // начинай запись!
        bmp.newHar("pofig");
    }```

Логи и ошибка вот такая ...

Версии ОС и софта следующие
implementation 'com.codeborne:selenide:6.4.0'
implementation 'com.codeborne:selenide-proxy:6.4.0'
+ Selenoid

Подскажите где туплю или может есть рабочий пример запуска прокси и получения от нее har файла ?

Ну конечно, вы же сами запускаете ChromeDriver (строчка “var chrome = new ChromeDriver”). Запускаете его БЕЗ прокси. И потом удивляетесь, что прокси нет.

Удалите строки var chrome = new ChromeDriver... и WebDriverRunner.setWebDriver....
Тогда селенид сам запустит браузер с прокси и другими нужными настройками.

Спасибо, так получилось.
А если надо запустить Selenide с настройками через установку драйвера

RemoteWebDriver driver = new RemoteWebDriver(new URL("http://SELENOID/wd/hub/"), capabilities);
        WebDriverRunner.setWebDriver(driver);

Не понял, это был вопрос?
Тогда надо вебдрайверу при создании подсунуть прокси. Примеры есть в тестах самого селенида: selenide/CustomWebdriverWithSelenideProxyTest.java at main · selenide/selenide · GitHub

Работает, а еще можете дать совет. Если локально запускаю тесты данные прокси собираются, а если через Selenoid, то har файл пустой. Как это можно исправить ?

Прокси должен работать и в селеноиде, если есть доступ (а если доступа нет, то в тестах вообще ничего не будет работать).

Добрый день, не получилось запустить через код написанные на старом фреймверке и с использование setWebdriver()
Попробовал сделать на чистом проекте без установки remote webdriver, настройки и сразу запуск прокси.

public class MyWebDriver {
    public BrowserUpProxy bmp;
    private Capabilities chromeCapabilites() {
        ChromeOptions options = new ChromeOptions();
        options.setCapability("acceptSslCerts", true);
        options.setCapability("acceptInsecureCerts", true);
        options.addArguments("--proxy-bypass-list=<-loopback>");
        Map<String, Boolean> opt = new HashMap<>();
        opt.put("enableVNC", true);
        opt.put("enableLog", false);
        options.setCapability("selenoid:options", opt);
        return new DesiredCapabilities(options);
    }

    @BeforeAll
    void setUp() {
        Locale.setDefault(Locale.ENGLISH);
        Configuration.timeout = 15000;
        Configuration.screenshots = false;
        Configuration.savePageSource = false;
        Configuration.headless = false;
        Configuration.proxyEnabled = true;
        Configuration.remote = IP+"/wd/hub/";
        Configuration.browser = "CHROME";
        Configuration.browserSize = "1920x1080";
        Configuration.pageLoadStrategy = "normal";  
        Configuration.reportsFolder = "target/surefire-reports";
        Configuration.downloadsFolder = "target/downloads";
        Configuration.browserCapabilities = (MutableCapabilities) chromeCapabilites();
        open();
        bmp = WebDriverRunner.getSelenideProxy().getProxy();
        bmp.setHarCaptureTypes(CaptureType.getAllContentCaptureTypes());
        bmp.enableHarCaptureTypes(CaptureType.REQUEST_CONTENT, CaptureType.RESPONSE_CONTENT);
        bmp.newHar("pofig");
    }

}

Если запускать локально( закомментировать Configuration.remote = IP+"/wd/hub/";), то все работает четко. Но если подключить Selenoid, то появляется ошибка
unknown error: net::ERR_PROXY_CONNECTION_FAILED
Похоже что не хватает какой-то настройки, но не могу найти какой именно настройки.
Андрей подскажите где у меня косяк ?

Проблема в том, что прокси запускается на машине с тестами.
А браузер - внутри докера.
Поэтому в настройку Configuration.proxyHost нужно прописать айпишник машины с тестами.

Чтобы не хардкодить айпишник, можно попробовать такой трюк:

Configuration.proxyHost = new org.openqa.selenium.net.NetworkUtils().getNonLoopbackAddressOfThisMachine();

1 лайк