2015-05-22 2 views
12

Ich benutze SoapUI Pro 5.1.2 unter Win7 x32 und versuche, mich in Groovy TestStep mit Selenium Webdriver zu verbinden.Selenium UnreachableBrowserException - "Es konnte keine neue Sitzung gestartet werden" in SoapUI Groovy TestStep

Für diesen Zweck habe ich selenium-standalone-server.jar v2.45.0 in $SOAP_HOME$\bin\ext Ordner hinzugefügt.

My Groovy Testschritt 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 ausführen, gibt SoapUI Nachricht:

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, dieses Stück Code durch die Netbeans IDE zu laufen, nach dem Hinzufügen der gleichen selenium-standalone-server.jar Paket zu leeren Java-Projekt. Und es hat ohne Probleme abgeschlossen!

Dies ist fehler Logbuch der 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 dort auch versucht FirefoxDriver() statt ChromeDriver(), und bekam den gleichen Fehler.

Ich bin am Rande der Verzweiflung, bitte helfen!

+0

Sieht aus wie 'chromedriver.exe' beginnt normally- mindestens soapUI log in Terminal zeigt Meldung' Starten ChromeDriver 2.15.322448 (Hash-Code) auf Port 36240' Recht vor Fehlermeldung –

+0

Ich habe versucht, 'FirefoxDriver()' ohne Vorkonfiguration - der einfachste Weg, Browser zu starten - aber es wirft den gleichen Fehler zu –

+0

Ich habe den gleichen Fehler, meine Lösung war eine ältere Version von Chrome – fab

Antwort

0

Es habe dir schon gesagt, was passiert ist:

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

Versuch zu definieren Pfad einer der nächsten Möglichkeiten, mit:

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

ODER

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

Auch würde ich nicht Ich empfehle Ihnen, chromedriver.exe im Ordner system32 zu speichern, vor allem, wenn Sie nicht admi haben n Rechte auf der Workstation. Verwenden Sie smt wie C: /WebDrivers/hromedriver.exe

+0

Es ist nicht Der ChromeDriver-Pfad für die ausführbare Datei ist falsch, da Java "IllegalStateException" auslöst: "Die ausführbare Datei des Treibers existiert nicht". Ich habe versucht, das Verzeichnis des Treibers zu ändern, indem ich eine neue Kopie von 'chromedriver.exe' in' C: \ drivers' platzierte, aber es ist keine Hilfe - der gleiche Fehler erscheint. –

3

herunterladen neuesten Treiber (Chrom oder IE) von seleniumhq.org, und verwenden Sie folgenden Code

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

Das ist für mich gearbeitet.

+0

das Aktualisieren des verchromten Treibers hat mir geholfen. –

12

Ich habe den gleichen Fehler aufgetreten, der sagte:

org.openqa.selenium.remote.UnreachableBrowserException: Es konnte keine neue Sitzung starten. Mögliche Ursachen sind eine ungültige Adresse des Remote-Servers oder der Startfehler des Browsers.

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

Meine Umgebung ist, wie folgend,

  • windows 7 ultimate 64-Bit-System
  • Selen-Server-Standalone-2.47.1
  • chromedriver 2.19
  • google chrome: 45,0

Nach vielen Versuchen in Google Ergebnisse legten nahe, meine endgültige Lösung ist 127.0.0.1 localhost zu C:\Windows\System32\drivers\etc\hosts hinzuzufügen.

Ich hoffe, Ihnen zu helfen!

+1

Kann auch ein Problem sein, wenn Sie einen falschen Localhost-Eintrag haben. Kurz gesagt, scheint Selen nur 127.0.0.1 localhost als Ihr localhost-Eintrag. – PeterS

2

In Selen diese Fehlermeldung:

org.openqa.selenium.remote.UnreachableBrowserException: konnte keine neue Sitzung starten. Mögliche Ursachen sind eine ungültige Adresse des entfernten Servers oder Browser-Startfehlers .

Könnte viele Ursachen haben. Doch am stacktrace suchen in diesem Fall aufgrund einer 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 man Selen innerhalb SOAPUI verwenden. SOAPUI scheint den Standardproxy auf null (ProxySelector.setDefault(null)) zu setzen. Wenn Selen den Standardproxy erhält und eine Methode darauf aufruft, wird NullPointerException ausgelöst.

Das Problem ist, dass Sie Ihren Code innerhalb von SOAPUI ausführen, so dass Sie den Standardproxy nicht erhalten können, bevor SOAPUI auf null gesetzt ... dann eine mögliche Abhilfe ist in Ihrem Groovy testStep versuchen, ein ProxySelector zu erstellen und als Standard festlegen vor WebDriver ausgeführt:

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 ProxySelector abstrakte Klasse in einer groovigen Art und Weise, mindestens eine direkte Proxy einzustellen. Wenn es notwendig ist, ist es auch möglich, die Proxy Klasse zu verwenden, um einen nicht direkten Proxy zu konfigurieren und in der Liste zu setzen, aber mit diesem Code versuche ich, die NPE wegen SOAPUI ProxySelector.setDefault(null) zu vermeiden.

0

Dies könnte ein Kompatibilitätsproblem zwischen der von Ihnen verwendeten Version "selen", "Chrome Browser Version" und "Chrome Driver" sein.

Wenn Sie Selenium 2.53 (wie ich) verwenden, dann sollte die Verwendung von Chrome Driver 2.25 für Sie funktionieren.

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

Verwandte Themen