Проблема:
Пытаюсь запустить Selenide Proxy в селеноиде, адрес и порт хоста указываю через Configuration.proxyHost(адрес машины, где бегают тесты) & Configuration.proxyPort, затем передаю в WebDriverRunner.setWebdriver(driver, proxy)
однако прокси запускается на адрес 0.0.0.0:4444, о чем и говорят логи. Соответственно har файл пустой.
Вижу в методе SelenideProxyServer.start используется метод start(port) без указания хоста, не совсем понимаю, как в таком случае передается хост.
Что-то вы слишком всё усложнили. Обычно не нужно мешать в кучу и Configuration, и SelenideConfig. И зачем вам понадобилось отдельно запускать SelenideProxyServer?
SelenideProxyServer запускал по примеру тут , т.к. использую setWebDriver(), иначе ругается, что параметр Configguration.proxy = true, а прокси не передается в setWebdriver()
Эксперемента ради убрал setWebDriver и попробовал сделать как в примере:
Все равно прокси запускается не на нужном адресе
А, понял. Тогда с хостом у вас нет проблемы. Селенид запускает прокси по адресу 0.0.0.0:4444, а это значит, что прокси будет слушать любые запросы на любые хосты, которые до него долетят. Настройка proxyHost нужна для того, чтобы сказать браузеру, к какому хосту обращаться. Но в вашем примере вы не запускаете браузер, поэтому настройка proxyHost фактически не используется.
А проблема у вас по-прежнему в том, что наворочен ненужный код. Скорее всего вам не нужно ни создавать инстанс SelenideProxyServer, ни запускать у него вручную метод start. И уж что точно не нужно делать, так это создавать вручную new Proxy(). Этот параметр задания для внешнего прокси, который где-то снаружи запущен уже до селенида. Ну, какой-нибудь там корпоративный.
Во втором варианте вы создаёте экземпляр new SelenideConfig(), а это новый объект настроек, он полностью игнорирует всё, что вы до этого засунули в Configuration.
Ещё раз: не создавайте ничего руками. Только напихайте значений в Configuration и дёргайте open(url).
Driver info: org.openqa.selenium.remote.RemoteWebDriver
Command: [1a2e748ca0d568aa8735d984cedc4df6, get {url=my_url}]
selenide.url: my_url
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
at java.base/java.lang.reflect.Constructor.newInstance(Constructor.java:490)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.createException(W3CHttpResponseCodec.java:200)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:133)
at org.openqa.selenium.remote.codec.w3c.W3CHttpResponseCodec.decode(W3CHttpResponseCodec.java:53)
at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:184)
at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:541)
at org.openqa.selenium.remote.RemoteWebDriver.get(RemoteWebDriver.java:310)
at org.openqa.selenium.remote.RemoteWebDriver$RemoteNavigation.to(RemoteWebDriver.java:981)
at com.codeborne.selenide.drivercommands.Navigator.lambda$navigateTo$0(Navigator.java:74)
at com.codeborne.selenide.logevents.SelenideLogger.run(SelenideLogger.java:105)
at com.codeborne.selenide.drivercommands.Navigator.navigateTo(Navigator.java:70)
at com.codeborne.selenide.drivercommands.Navigator.open(Navigator.java:32)
at com.codeborne.selenide.SelenideDriver.open(SelenideDriver.java:101)
at com.codeborne.selenide.Selenide.open(Selenide.java:52)
at MyTest.myTestMethod()
Нашел аналогичную ошибку тут , но с депенденси в порядке, конфликтов нет.
Тут зависит от того, какое значение в SELENIUM_HOST_PROPERTY. Если там какой-то адрес, который физически недоступен из браузера, то и не сможет работать.
Странно, что одинаковый порт 4444 используется и для прокси, и для Selenoid. С портами точно не напутали?
Так ведь указано ровно наоборот!
Есть всего две машины:
“машина с тестами”, и
“машина с селеноидом”
Вы прописываете айпишник (2), а в приведённой цитате сказано (1).
Попробуйте для начала не указывать никакой айпишник - селенид и сам умеет его определять.