При включении встроенного Selenid Proxy возникает проблема с доступом к страницам сайта. Проблема возникает абсолютно с любой страницей любого сайта при включении встроенного прокси. Если выключить прокси, то всё работает. Мой основной кейс, требует установки хедера X_REMOTE_USER в запросе.
Для упрощения воспроизведения проблемы создал простой тест, который должен вывести информацию о запросе:
import com.codeborne.selenide.Browsers;
import com.codeborne.selenide.Configuration;
import com.codeborne.selenide.WebDriverRunner;
import com.google.common.collect.ImmutableMap;
import io.qameta.allure.Story;
import org.junit.jupiter.api.Test;
import org.openqa.selenium.remote.DesiredCapabilities;
import static com.codeborne.selenide.Selenide.open;
public class CheckTest {
@Story("Проверка")
@Test
public void checkTest() throws InterruptedException {
String selenoidURL = "http://localhost:4444/wd/hub";
Configuration.proxyEnabled = true;
Configuration.remote = selenoidURL;
Configuration.browser = Browsers.CHROME;
Configuration.browserVersion = "128.0_en";
Configuration.screenshots = false;
Configuration.browserCapabilities = getCapabilities();
String standURL = "http://httpbin.org/get";
open();
WebDriverRunner.getSelenideProxy().getProxy().addHeader("X_REMOTE_USER", "Marmeladova");
System.out.println(WebDriverRunner.getSelenideProxy().getProxy().getAllHeaders() + " HEADERS!!!!");
open(standURL);
Thread.sleep(1000000); // для просмотра в Selenoid UI
System.out.println(WebDriverRunner.getWebDriver() + " DRIVER!!!!"); //Убедиться что WebDriver не Null
}
private DesiredCapabilities getCapabilities() {
DesiredCapabilities capabilities = new DesiredCapabilities();
capabilities.setBrowserName("chrome");
capabilities.setCapability("selenoid:options", ImmutableMap.of(
"enableVNC", true,
"enableVideo", true,
"enableLog", true
));
return capabilities;
}
}
Для поднятия Selenoid и Selenoid UI использую docker-compose:
version: '3.6'
networks:
selenoid:
name: selenoid
driver: bridge
services:
selenoid:
container_name: selenoid
image: "aerokube/selenoid:latest-release"
ports:
- "4444:4444"
volumes:
- ./config/:/etc/selenoid/:ro
- /opt/video:/opt/selenoid/video
- /opt/logs:/opt/selenoid/logs
- /var/run/docker.sock:/var/run/docker.sock
command: [ "-conf", "/etc/selenoid/browsers.json", "-container-network", "selenoid", "-limit", "10", "-retry-count", "2" ]
networks:
- selenoid
selenoid-ui:
container_name: selenoid-ui
image: "aerokube/selenoid-ui:latest-release"
ports:
- "8080:8080"
command: [ "--selenoid-uri", "http://selenoid:4444" ]
networks:
- selenoid
Настройка browsers.json:
{
“chrome”: {
“default”: “128.0_en”,
“versions”: {
“128.0_ru”: {
“port”: “4444”,
“image”: “selenoid/vnc_chrome:128.0”,
“env” : [“LANG=ru_RU.UTF-8”, “LANGUAGE=ru_RU.UTF-8”, “LC_ALL=ru_RU.UTF-8”]
},
“128.0_en”: {
“port”: “4444”,
“image”: “selenoid/vnc_chrome:128.0”,
“env” : [“LANG=en_US.UTF-8”, “LANGUAGE=en_US.UTF-8”, “LC_ALL=en_US.UTF-8”]
}
}
}
}
При выполнении теста захожу в Selenoid UI и вижу, сообщение о недоступности страницы, причем какой URL не указывал, всегда один результат:
Результат без использования прокси:
Тесты запускаются на машине с Windows 10, в проекте используется Java 19