t.me/atinfo_chat Telegram группа по автоматизации тестирования

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

Теги: #<Tag:0x00007f0e68b81f50> #<Tag:0x00007f0e68b81e60> #<Tag:0x00007f0e68b81d70> #<Tag:0x00007f0e68b81c80> #<Tag:0x00007f0e68b81b90>

Для локального скачивания освоила скачивание через 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 используйте https://github.com/selenide/selenide-selenoid

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 работает и в селеноиде. Он ищет скачанные файлы внутри контейнера селеноида.