Selenium UnreachableBrowserException - "Не удалось начать новый сеанс" в SoapUI Groovy TestStep
Я использую SoapUI Pro 5.1.2 на Win7 x32 и пытаюсь подключиться к Selenium Webdriver в Groovy TestStep.
Для этого я добавил selenium-standalone-server.jar
v2.45.0 in $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()
и получил ту же ошибку.
8 ответов
Я столкнулся с той же ошибкой, которая сказала:
org.openqa.selenium.remote.UnreachableBrowserException: не удалось начать новый сеанс. Возможные причины: неверный адрес удаленного сервера или ошибка запуска браузера.
но chromedriver.exe
началось нормально. Я вижу это в диспетчере задач.
Моя среда выглядит следующим образом,
- Windows 7, Ultimate, 64-битная система
- Селен-сервер автономный-2.47.1
- хромедрайвер 2.19
- Google Chrome: 45,0
После многих попыток, предложенных в результатах поиска Google, мое окончательное решение - добавить 127.0.0.1 localhost
в C:\Windows\System32\drivers\etc\hosts
,
Надеюсь помочь вам!
Загрузите последнюю версию драйвера (chrome или IE) с seleniumhq.org и используйте приведенный ниже код
System.setProperty("webdriver.chrome.driver","<YourPath>chromedriver.exe");
WebDriver driver=new ChromeDriver();
driver.get("http://www.yahoo.com");
Это сработало для меня.
В селене это сообщение об ошибке:
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)
,
Я столкнулся с той же проблемой, и обновление до последней версии драйвера Chrome устранило мою проблему.
Вы можете загрузить последнюю версию драйвера Chrome по следующему URL-адресу.
http://chromedriver.storage.googleapis.com/index.html
Лучше всегда использовать самую последнюю версию. После загрузки укажите путь к драйверу Chrome в System.setProperty("webdriver.chrome.driver","{Ваш путь к Chrome Driver}");
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}");
Эта проблема полностью связана с версией браузера 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}")
# ЯВА # СЕЛЕНИУМ
Он уже рассказал вам, что случилось:
//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
Это может быть проблема совместимости используемой вами версии "selenium", "версия браузера Chrome" и "версия драйвера Chrome".
Если вы используете Selenium 2.53 (как и я), то использование хромового драйвера 2.25 должно работать на вас.
Вы можете скачать его здесь - https://chromedriver.storage.googleapis.com/index.html?path=2.25/