Подтвердить что ты не робот

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() и получил ту же ошибку.

Я на грани отчаяния, пожалуйста, помогите!

4b9b3361

Ответ 1

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

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

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

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

  • Windows 7, конечная, 64-разрядная система.
  • селен-сервер автономный-2.47.1
  • chromedriver 2.19
  • google chrome: 45.0

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

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

Ответ 2

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

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

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

Ответ 3

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

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

Может быть много причин. Однако при просмотре stacktrace в этом случае требуется 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 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 в Groovy, чтобы установить хотя бы один прямой прокси. Если это необходимо, можно также использовать класс Proxy для настройки прямого прокси-сервера и его установки в списке, но с этим кодом я пытаюсь избежать NPE из-за SOAPUI ProxySelector.setDefault(null).

Ответ 4

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

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

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

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

ИЛИ

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

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

Ответ 5

Это может быть проблема совместимости между версией "selenium", "chrome browser version" и "chrome driver", которую вы используете.

Это вы используете Selenium 2.53 (например, я), а затем использовать хром-драйвер 2.25 должен работать для вас.

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