Selenide. Настройка PROXY для скачивания файла

Для локального скачивания освоила скачивание через FOLDER
Но появилась необходимость использования прокси для скачивания при использовании Selenoid

Написала самый простой тест из примера Почему прокси не работает в Selenoid? и запускаю локально

Proxy proxy = BrowserMobUtils.getSeleniumProxy();
Configuration.fileDownload = FileDownloadMode.PROXY;
Configuration.proxyEnabled = true;
Configuration.browser = Browsers.CHROME;
WebDriverRunner.setProxy(proxy);
Selenide.open(“The Internet”);
File file = Selenide.$(By.linkText(“some-file.txt”)).download();
Assertions.assertThat(file.getName()).isEqualTo(“some-file.txt”);

При запуске получаю ошибку:

org.openqa.selenium.WebDriverException: unknown error: net::ERR_PROXY_CONNECTION_FAILED
  (Session info: chrome=90.0.4430.212)
Build info: version: '3.141.59', revision: 'e82be7d358', time: '2018-11-14T08:17:03'
System info: host: 'ii-i-s', ip: '192.168.0.0', os.name: 'Mac OS X', os.arch: 'x86_64', os.version: '10.16', java.version: '1.8.0_282'
Driver info: org.openqa.selenium.chrome.ChromeDriver
selenide.url: https://the-internet.herokuapp.com/download
Capabilities {acceptInsecureCerts: true, browserName: chrome, browserVersion: 90.0.4430.212, chrome: {chromedriverVersion: 90.0.4430.24 (4c6d850f087da..., userDataDir: /var/folders/h6/q3kd1l956l9...}, goog:chromeOptions: {debuggerAddress: localhost:54577}, javascriptEnabled: true, networkConnectionEnabled: false, pageLoadStrategy: normal, platform: MAC, platformName: MAC, proxy: Proxy(manual, http=struchev..., setWindowRect: true, strictFileInteractability: false, timeouts: {implicit: 0, pageLoad: 300000, script: 30000}, unhandledPromptBehavior: dismiss and notify, webauthn:extension:largeBlob: true, webauthn:virtualAuthenticators: true}
selenide.baseUrl: http://localhost:8080
Session ID: 58bb791ab89e50bf67560748d0cc59cd

	at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
	at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
	at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
	at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
	at org.openqa.selenium.remote.http.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:187)
	at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:122)
	at org.openqa.selenium.remote.http.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:49)
	at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:158)
	at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:83)
	at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:552)
	at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:277)
	at org.openqa.selenium.remote.RemoteWebDriver$RemoteNavigation.to(RemoteWebDriver.java:857)
	at com.codeborne.selenide.drivercommands.Navigator.navigateTo(Navigator.java:72)
	at com.codeborne.selenide.drivercommands.Navigator.open(Navigator.java:32)
	at com.codeborne.selenide.SelenideDriver.open(SelenideDriver.java:84)

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

@rid00dle для selenoid используйте GitHub - selenide/selenide-selenoid: Selenoid plugin for Selenide

2 лайка

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

Я тоже долго мучился с настройкой proxy, но плагин, который рекомендует @osipov_boris, делает все настройки за вас. Берите его и пол зуйтесь, тем более вы работаете с selenoid

1 лайк

Вот я написала самый простой тест в новом проекте(что бы точно ничего никому не мешало)

Configuration.fileDownload = PROXY;
Configuration.browser = Browsers.CHROME;
Configuration.proxyEnabled = true;
open(“The Internet”);
File file = $(byText(“some-file.txt”)).download();
assertThat(file).hasName(“some-file.txt”);

В зависимостях есть

<dependency>
            <groupId>org.selenide</groupId>
            <artifactId>selenide-selenoid</artifactId>
            <version>1.1.2</version>
</dependency>

Но я получаю ERR_PROXY_CONNECTION_FAILED

Невнимательно наверное читали документацию

Configuration.fileDownload = FileDownloadMode.FOLDER;

И уберите

Ну погодите. Я хочу именно прокси использовать, потому что скачивание файла в папку не отработает при удаленном запуске
Локально да, все хорошо. Но если я использую Селеноид, то файл не находит он

Всё отработает! Я запускаю с такими параметрами и у меня всё отрабатывает.

Вот примеры использования данного плагина

В вашем коде нет адреса proxy, поэтому selenide не знает куда проксировать.

Вот ответ знающего человека на ваш вопрос, если вы хотите все таки указывать адрес прокси машины

1 лайк

Спасибо большое! Буду разбираться)

1 лайк

Нет, вам не нужен прокси. Плагин selenide-selenoid тем и хорош, что с ним скачивание через FOLDER работает и в селеноиде. Он ищет скачанные файлы внутри контейнера селеноида.