it-swarm.com.de

Selenium UnreachableBrowserException - "Konnte keine neue Sitzung starten" in SoapUI Groovy TestStep

Ich verwende SoapUI Pro 5.1.2 unter Win7 x32 und versuche in Groovy TestStep eine Verbindung zum Selenium Webdriver herzustellen.

Zu diesem Zweck habe ich Selenium-standalone-server.jar v2.45.0 im Ordner $SOAP_HOME$\bin\ext hinzugefügt.

Mein Groovy TestStep-Code:

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()

Wenn ich versuche, diesen Schritt auszuführen, gibt SoapUI die folgende Meldung zurück:

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

Ich habe versucht, diesen Code über das Netbeans IDE auszuführen, nachdem ich dasselbe Selenium-standalone-server.jar-Paket zu einem leeren Java-Projekt hinzugefügt habe. Und es ist ohne Probleme abgeschlossen!

Dies ist ein Fehlerprotokoll von 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

Ich habe auch FirefoxDriver() anstelle von ChromeDriver() ausprobiert und den gleichen Fehler erhalten.

12
Maxim Romanyuk

Ich bin auf den gleichen Fehler gestoßen:

org.openqa.Selenium.remote.UnreachableBrowserException: Eine neue Sitzung konnte nicht gestartet werden. Mögliche Ursachen sind eine ungültige Adresse des Remote-Servers oder ein Fehler beim Start des Browsers.

aber chromedriver.exe begann gut. Ich kann es im Taskmanager sehen.

Meine Umgebung ist wie folgt: 

  • windows 7, ultimatives 64-Bit-System
  • Selen-Server-Standalone-2.47.1
  • chromdriver 2.19
  • google Chrome: 45,0

Nach vielen Versuchen, die in Google-Ergebnissen vorgeschlagen wurden, besteht meine letzte Lösung darin, 127.0.0.1 localhost zu C:\Windows\System32\drivers\etc\hosts hinzuzufügen.

Hoffe, dir zu helfen!

12
xjfengck

Laden Sie den neuesten Treiber (Chrome oder IE) von seleniumhq.org herunter und verwenden Sie den folgenden Code

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

Das hat bei mir funktioniert.

5
Yash Jagdale

In Selenium diese Fehlermeldung:

org.openqa.Selenium.remote.UnreachableBrowserException: Konnte nicht eine neue Sitzung beginnen Mögliche Ursachen sind eine ungültige Adresse der entfernten Server- oder Browser-Startfehler.

Könnte viele Ursachen haben. Bei der Betrachtung des Stacktraces handelt es sich jedoch um eine 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)

Das Problem ist, dass Sie Selenium in SOAPUI verwenden. SOAPUI scheint den Standard-Proxy auf null (ProxySelector.setDefault(null)) zu setzen. Wenn also Selenium den Standard-Proxy erhält und eine Methode aufruft, wird eine NullPointerException ausgelöst.

Das Problem ist, dass Sie Ihren Code in SOAPUI ausführen, sodass Sie den Standardproxy nicht abrufen können, bevor SOAPUI den Wert null festgelegt hat. Eine mögliche Problemumgehung ist in Ihrem großen Testschritt. Versuchen Sie, eine ProxySelector zu erstellen, bevor Sie WebDriver ausführen :

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()

In diesem Beispiel erweitere ich die abstrakte Klasse ProxySelector auf groovige Weise, um mindestens einen direkten Proxy festzulegen. Wenn nötig, können Sie auch die Klasse Proxy verwenden, um einen direkten Proxy zu konfigurieren und ihn in der Liste festzulegen. Mit diesem Code versuche ich jedoch, die Variable NPE aufgrund von SOAPUI ProxySelector.setDefault(null) zu vermeiden.

2
albciff

Dies könnte ein Kompatibilitätsproblem zwischen der von Ihnen verwendeten Version 'Selenium', 'Chrome-Browser' und 'Chrome-Treiber' sein. 

Wenn Sie Selenium 2.53 (wie ich) verwenden, sollte der Chrome-Treiber 2.25 für Sie funktionieren.

Sie können es hier herunterladen - https://chromedriver.storage.googleapis.com/index.html?path=2.25/

0
Santosh Pillai

Es hat dir schon gesagt, was passiert ist:

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

Versuchen Sie, den Pfad auf eine der folgenden Arten zu definieren:

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'))

Ich würde auch nicht empfehlen, chromedriver.exe im system32-Ordner zu speichern, insbesondere wenn Sie keine Administratorrechte auf der Arbeitsstation haben. Verwenden Sie smt wie C: /WebDrivers/hromedriver.exe

0
Ivan Litskevich