Selenide PROXY // Выключение ранее запущенного прокси для кастомных тестов, где прокси больше не нужен. Ошибка ERR_PROXY_CONNECTION_FAILED

Теги: #<Tag:0x00007f739750c780> #<Tag:0x00007f739750c230> #<Tag:0x00007f73975075f0> #<Tag:0x00007f7397506088> #<Tag:0x00007f7397505e30>

Всем привет !

Нужна помощь в следующем вопросе.
Есть тесты, которые изначально бегут с включенным PROXY.

Далее в конце этого же сьюта есть 2 катомных теста, для которых прокси нужно отключить, делаю это так:

@Test(priority = 1)
    public void setup()
    {
        if( isPROD )
        {
            logger.info("This is PROD -> Disabling proxy for TrackChangesTenant on PROD...");

            logger.info("Stopping the previous running...");
            SelenideProxyServer proxy = getSelenideProxy();
            proxy.shutdown();

            logger.info("Disabling proxyEnabled flag...");
            Configuration.proxyEnabled = false;
            Configuration.fileDownload = FileDownloadMode.HTTPGET;
        }

        Configuration.browserSize = "1920x1080";
        Configuration.timeout = 10_000;

        System.setProperty( "chromeoptions.args", "--no-sandbox --disable-dev-shm-usage" );

        Const.DOWNLOAD_DIR.mkdirs();
        Const.SCREENSHOTS_DIR.mkdirs();

        Configuration.downloadsFolder = Const.DOWNLOAD_DIR.getAbsolutePath();
        Configuration.reportsFolder   = Const.SCREENSHOTS_DIR.getAbsolutePath();

        ......etc

Так вот тесты до этой настройки( с включенной прокси ) доходят и всё нормально.

Но, как только запускается первый кастомный тест, в логах получаю такое:

 2021-08-09 09:09:25,221 [main] INFO  tests.LoginToTrackChangesTenant  - This is PROD -> Disabling proxy for TrackChangesTenant on PROD...
2021-08-09 09:09:25,221 [main] INFO  tests.LoginToTrackChangesTenant  - Stopping the previous running...
2021-08-09 09:09:25 [main] INFO org.littleshoot.proxy.impl.DefaultHttpProxyServer - Shutting down proxy server immediately (non-graceful)
2021-08-09 09:09:25 [main] INFO org.littleshoot.proxy.impl.DefaultHttpProxyServer - Closing all channels (non-graceful)
2021-08-09 09:09:25 [main] INFO org.littleshoot.proxy.impl.ServerGroup - Shutting down server group event loops (non-graceful)
2021-08-09 09:09:25 [main] INFO org.littleshoot.proxy.impl.DefaultHttpProxyServer - Done shutting down proxy server
2021-08-09 09:09:25,229 [main] INFO  tests.LoginToTrackChangesTenant  - Disabling proxyEnabled...
2021-08-09 09:09:25,390 [main] WARN  tests.LoginToTrackChangesTenant  - encountered exception : 
org.openqa.selenium.WebDriverException: unknown error: net::ERR_PROXY_CONNECTION_FAILED
  (Session info: chrome=86.0.4240.75)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'b2ea92d78319', ip: '192.168.48.3', os.name: 'Linux', os.arch: 'amd64', os.version: '4.15.0-1106-aws', java.version: '1.8.0_222'

Вопрос,
почему получаю WebDriverException: unknown error: net::ERR_PROXY_CONNECTION_FAILED ?

Правильно ли я убиваю запущенный ранее прокси из кода ?
Как вообще подтянуть дефолтовые настройки перед вызовом open() в Селениде ( но уже с Configuration.proxyEnabled = false ) ?

Буду благодарен за помощь.

Просто остановить прокси мало. У вас же остаётся запущенный браузер, который всё ещё пытается всё грузить через этот прокси. Браузеру-то никто не сказал, что прокси больше не нужен.

Придется ещё и открыть новый браузер.

Но в целом это всё как-то стрёмно. Думаю, есть решение получше. Почему надо обязательно вырубить прокси именно в двух тестах? Почему они не могут работать через прокси?

1 симпатия

вот почему

@asolntsev Спасибо !

Это именно то что нужно.
Не знал, что еще нужно было браузер закрывать.
Да, это люто стрёмно. Костыльно. Причем что самое интересное, на мастере и на релиз кандидате с включенным прокси - всё ок. Если же это прод, то получал такую ошибку:
ERR_TUNNEL_CONNECTION_FAILED
( Кстати, даже есть отдельная темка: Selenide ChromeDriver // open http и https. Ошибка Bad gateway и err tunnel connection failed )
Потому пришлось отключать PROXY именно для этих 2-х тестов для прода :frowning:
Девелоперы разводят руками и не знают, почему так происходит. Приходится так изворачиваться.
Спасибо еще раз. Всё завелось.

@madvlaydin Нет.

Файлы к себе не получается загрузить через HTTPGET, потому PROXY воткнул.
На реакте UI написан.

А вебдрайвер стартуется средствами селенида, или у вас какой-то кастомный код?
Возможно, забыли вызвать capabilities.setCapability(ACCEPT_SSL_CERTS, true); или capabilities.setCapability(ACCEPT_INSECURE_CERTS, true);?

А попробуйте скачивать файлы через FOLDER вместо PROXY?
Тогда не придётся с прокси возиться.

Да, средствами селенида.
FOLDER тоже пробовал - не получилось.

Так может, надо разобраться, почему не получилось?

Некогда было.
Тестов было 0 к тому времени и нужно было покрывать всё тестами как можно скорее.
Добро пожаловать в реальный мир :slight_smile:

Сейчас, наверное, можно и разобраться… Только зачем, если оно и так работает ?

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