Nano Hash - криптовалюты, майнинг, программирование

Selenium UnreachableBrowserException - не удалось начать новый сеанс в SoapUI Groovy TestStep

Я использую SoapUI Pro 5.1.2 на Win7 x32 и пытаюсь подключиться к Selenium Webdriver в Groovy TestStep.

Для этого я добавил selenium-standalone-server.jar v2.45.0 в папку $SOAP_HOME$\bin\ext.

Мой код Groovy TestStep:

import org.openqa.selenium.WebDriver
import org.openqa.selenium.chrome.ChromeDriver

System.setProperty('webdriver.chrome.driver', 'C:\\\\Windows\\system32\\chromedriver.exe')
log.info(System.getProperty('webdriver.chrome.driver')) //got 'C:\\Windows\system32\chromedriver.exe'

WebDriver driver = new ChromeDriver() // this line causes error

driver.get('http://google.com')
driver.quit()

Когда я пытаюсь выполнить этот шаг, SoapUI возвращает сообщение:

org.openqa.selenium.remote.UnreachableBrowserException: 
Could not start a new session. 
Possible causes are invalid address of the remote server or browser start-up failure. 
Build info: 
    version: '2.45.0', 
    revision: '5017cb8', 
    time: '2015-02-26 23:59:50' 
System info: 
    host: 'SmithPC', 
    ip: '10.0.2.15', 
    os.name: 'Windows 7', 
    os.arch: 'x86', 
    os.version: '6.1', 
    java.version: '1.8.0_45' 
Driver info: 
    driver.version: ChromeDriver 
error at line: 7

Я попытался запустить этот фрагмент кода через среду IDE Netbeans после добавления того же пакета selenium-standalone-server.jar в пустой проект Java. И все прошло без проблем!

Это журнал ошибок soapUI:

org.openqa.selenium.remote.UnreachableBrowserException: Could not start a new session. Possible causes are invalid address of the remote server or browser start-up failure.
Build info: version: '2.45.0', revision: '5017cb8', time: '2015-02-26 23:59:50'
System info: host: 'SmithPC', ip: '10.0.2.15', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_45'
Driver info: driver.version: ChromeDriver
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:593)
    at org.openqa.selenium.remote.RemoteWebDriver.startSession(RemoteWebDriver.java:240)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:126)
    at org.openqa.selenium.remote.RemoteWebDriver.<init>(RemoteWebDriver.java:139)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:171)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:160)
    at org.openqa.selenium.chrome.ChromeDriver.<init>(ChromeDriver.java:117)
    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:422)
    at org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:77)
    at org.codehaus.groovy.runtime.callsite.ConstructorSite$ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:102)
    at org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:57)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:182)
    at org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:186)
    at Script3.run(Script3.groovy:7)
    at com.eviware.soapui.support.scripting.groovy.SoapUIGroovyScriptEngine.run(SoapUIGroovyScriptEngine.java:92)
    at com.eviware.soapui.support.scripting.groovy.SoapUIProGroovyScriptEngineFactory$SoapUIProGroovyScriptEngine.run(SourceFile:79)
    at com.eviware.soapui.impl.wsdl.teststeps.WsdlGroovyScriptTestStep.run(WsdlGroovyScriptTestStep.java:138)
    at com.eviware.soapui.impl.wsdl.panels.teststeps.GroovyScriptStepDesktopPanel$RunAction$1.run(GroovyScriptStepDesktopPanel.java:250)
    at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142)
    at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617)
    at java.lang.Thread.run(Thread.java:745)
Caused by: java.lang.NullPointerException
    at org.apache.http.impl.conn.SystemDefaultRoutePlanner.determineProxy(SystemDefaultRoutePlanner.java:79)
    at org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:77)
    at org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:124)
    at org.apache.http.impl.client.InternalHttpClient.doExecute(InternalHttpClient.java:183)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:71)
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:55)
    at org.openqa.selenium.remote.internal.ApacheHttpClient.fallBackExecute(ApacheHttpClient.java:126)
    at org.openqa.selenium.remote.internal.ApacheHttpClient.execute(ApacheHttpClient.java:72)
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:133)
    at org.openqa.selenium.remote.service.DriverCommandExecutor.execute(DriverCommandExecutor.java:66)
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572)
    ... 23 more

Я также пытался использовать FirefoxDriver() вместо ChromeDriver() и получил ту же ошибку.


  • Похоже, что chromedriver.exe запускается нормально - по крайней мере, журнал soapUI в терминале показывает сообщение Starting ChromeDriver 2.15.322448 (hashcode) on port 36240 прямо перед сообщением об ошибке 22.05.2015
  • Пробовал запускать FirefoxDriver() без предварительной настройки - самый простой способ запустить браузер - но тоже выдает ту же ошибку 22.05.2015
  • У меня та же ошибка, моим решением была более старая версия Chrome. 25.02.2016

Ответы:


1

Я столкнулся с той же ошибкой, в которой говорилось:

org.openqa.selenium.remote.UnreachableBrowserException: не удалось начать новый сеанс. Возможные причины: неверный адрес удаленного сервера или сбой при запуске браузера.

но chromedriver.exe запустился нормально. Я вижу это в диспетчере задач.

Моя среда выглядит следующим образом:

  • windows 7, максимальная, 64-битная система
  • селен-сервер-автономный-2.47.1
  • хромдрайвер 2.19
  • гугл хром: 45.0

После многих попыток, предложенных в результатах Google, мое окончательное решение — добавить 127.0.0.1 localhost к C:\Windows\System32\drivers\etc\hosts.

Надеюсь помочь вам!

13.09.2015
  • Также может быть проблемой, если у вас есть поддельная запись на локальном хосте. Короче говоря, селену нравится только 127.0.0.1 localhost в качестве вашей записи на локальном хосте. 30.11.2016

  • 2

    Загрузите последнюю версию драйвера (chrome или IE) с сайта seleniumhq.org и используйте приведенный ниже код.

        System.setProperty("webdriver.chrome.driver","<YourPath>chromedriver.exe");
        WebDriver driver=new ChromeDriver();
        driver.get("http://www.yahoo.com");
    

    Это сработало для меня.

    08.09.2015
  • обновление chromedriver мне помогло. 07.08.2017

  • 3

    В селене это сообщение об ошибке:

    org.openqa.selenium.remote.UnreachableBrowserException: Не удалось начать новый сеанс. Возможные причины: неверный адрес удаленного сервера или сбой при запуске браузера.

    Может быть много причин. Однако просмотр трассировки стека в этом случае связан с NullPointerException:

    Caused by: java.lang.NullPointerException
        at org.apache.http.impl.conn.SystemDefaultRoutePlanner.determineProxy(SystemDefaultRoutePlanner.java:79)
        at org.apache.http.impl.conn.DefaultRoutePlanner.determineRoute(DefaultRoutePlanner.java:77)
        at org.apache.http.impl.client.InternalHttpClient.determineRoute(InternalHttpClient.java:124)
    

    Проблема в том, что вы используете селен внутри SOAPUI. SOAPUI, похоже, устанавливает прокси-сервер по умолчанию на null (ProxySelector.setDefault(null)). Поэтому, когда селен получает прокси-сервер по умолчанию и вызывает для него метод, выдается NullPointerException.

    Проблема в том, что вы выполняете свой код внутри SOAPUI, поэтому вы не можете получить прокси-сервер по умолчанию до того, как SOAPUI установит для него значение null... тогда возможный обходной путь находится в вашем Groovy testStep, попробуйте создать ProxySelector и установить его по умолчанию до выполнения WebDriver :

    import org.openqa.selenium.WebDriver
    import org.openqa.selenium.chrome.ChromeDriver
    import java.net.Proxy
    import java.net.ProxySelector
    
    def selectDirectProxy(URI uri) {
      final List<Proxy> proxy = new ArrayList<Proxy>()
      proxy.add(Proxy.NO_PROXY)
      return proxy
    }
    
    // create a ProxySelector
    ProxySelector proxySelector = [ select : { uri->selectDirectProxy(uri) } ] as ProxySelector
    // set as default to avoid null pointer
    ProxySelector.setDefault(proxySelector);
    
    // now it's safe to invoke WebDriver...
    System.setProperty('webdriver.chrome.driver', 'C:\\\\Windows\\system32\\chromedriver.exe')
    log.info(System.getProperty('webdriver.chrome.driver')) //got 'C:\\Windows\system32\chromedriver.exe'
    
    WebDriver driver = new ChromeDriver()
    

    В этом примере я классно расширяю абстрактный класс ProxySelector, чтобы установить хотя бы один прямой прокси. При необходимости также можно использовать класс Proxy для настройки прямого прокси-сервера и установки его в списке, но с помощью этого кода я пытаюсь избежать NPE из-за SOAPUI ProxySelector.setDefault(null).

    14.09.2016
  • Действительно крутой трюк. Раньше я запускал веб-драйвер внутри более старых версий SoapUI (4.xx), и ваш пост помог мне запустить его в новых версиях :) 02.05.2019

  • 4

    Он уже рассказал вам, что произошло:

    //got 'C:**\\**Windows\system32\chromedriver.exe'
    

    Попробуйте определить путь одним из следующих способов:

    System.setProperty('webdriver.chrome.driver','C:\\Windows\\system32\\chromedriver.exe')
    log.info(System.getProperty('webdriver.chrome.driver'))
    

    OR

    System.setProperty('webdriver.chrome.driver','C:/Windows/system32/chromedriver.exe')
    log.info(System.getProperty('webdriver.chrome.driver'))
    

    Также я бы не рекомендовал вам хранить chromedriver.exe в папке system32, особенно если у вас нет прав администратора на рабочей станции. Используйте smt как C:/WebDrivers/chromedriver.exe

    22.05.2015
  • Дело не в том, что путь к исполняемому файлу ChromeDriver неверен, потому что эта java выдает IllegalStateException: исполняемый файл драйвера не существует. Пробовал менять директорию драйвера, помещая новую копию chromedriver.exe в C:\drivers, но не помогает - появляется та же ошибка. 22.05.2015

  • 5

    Это может быть проблема совместимости между используемыми вами версиями «селен», «версия браузера Chrome» и версия «драйвера Chrome».

    Если вы используете Selenium 2.53 (как и я), тогда использование драйвера Chrome 2.25 должно работать на вас.

    Вы можете скачать его здесь: https://chromedriver.storage.googleapis.com/index.html?path=2.25/

    20.04.2017

    6

    Я столкнулся с той же проблемой, и обновление до последней версии драйвера Chrome устранило мою проблему.

    Вы можете загрузить последнюю версию драйвера Chrome по следующему URL-адресу.

    http://chromedriver.storage.googleapis.com/index.html

    Лучше всегда использовать последнюю версию. После загрузки укажите путь к драйверу Chrome в System.setProperty("webdriver.chrome.driver","{Ваш путь к драйверу Chrome}");

        System.out.println("Creating Chrome Driver");
     // Set Chrome Driver
        System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");
    
        WebDriver driver = new ChromeDriver();
        driver.get("{Your URL}");
    
    04.11.2019

    7

    Если кто-то столкнулся с подобной проблемой в Ubuntu, проверьте, установлен ли у вас веб-браузер Chromium введите здесь описание изображения

    Недостаточно иметь только браузер Chrome.

    Подробнее

    23.04.2020

    8

    Эта проблема полностью связана с версией браузера Chrome и версией драйвера Chrome.

    Как только вы сохраните одинаковые версии браузера и драйвера, ваша проблема будет решена.

    Чтобы проверить версию Chrome, выполните следующие действия: -›› Нажмите на три вертикальные точки -›› Справка - ›› О браузере Google Chrome -›› см. версию для Chrome.

    введите здесь описание изображения

    Теперь проверьте версию Chrome BROWSER.

    введите здесь описание изображения

    в моем случае версия браузера 90.0

    Теперь загрузите ту же версию драйвера Chrome, соответствующую операционной системе.

    Мы загрузим версию драйвера 90.0, затем установим путь браузера System.setProperty(webdriver.chrome.driver, D:\chromedriver.exe);

    WebDriver driver = new ChromeDriver();
    driver.get("{Your URL}")
    

    #ЯВА #СЕЛЕН

    введите здесь описание изображения

    23.04.2021
    Новые материалы

    Кластеризация: более глубокий взгляд
    Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

    Как написать эффективное резюме
    Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

    Частный метод Python: улучшение инкапсуляции и безопасности
    Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

    Как я автоматизирую тестирование с помощью Jest
    Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

    Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
    Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

    Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
    В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

    Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
    В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..