Selenium UnreachableBrowserException – SoapUI中的“无法启动新会话”Groovy TestStep

我在Win7 x32上使用SoapUI Pro 5.1.2,并尝试在Groovy TestStep中连接到Selenium Webdriver。

为此,我在$SOAP_HOME$\bin\ext文件夹中添加了selenium-standalone-server.jar v2.45.0。

我的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 

在将相同的selenium-standalone-server.jar包添加到空java项目之后,我尝试通过Netbeans IDE运行这段代码。 它已经完成没有问题!

这是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.(RemoteWebDriver.java:126) at org.openqa.selenium.remote.RemoteWebDriver.(RemoteWebDriver.java:139) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:171) at org.openqa.selenium.chrome.ChromeDriver.(ChromeDriver.java:160) at org.openqa.selenium.chrome.ChromeDriver.(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() ,并得到了同样的错误。

我遇到了同样的错误,其中说:

org.openqa.selenium.remote.UnreachableBrowserException:无法启动新会话。 可能的原因是远程服务器的无效地址或浏览器启动失败。

chromedriver.exe启动正常。 我可以在任务管理器中看到它。

我的环境如下,

  • Windows 7,终极,64位系统
  • selenium的服务器独立-2.47.1
  • chromedriver 2.19
  • 谷歌浏览器:45.0

在谷歌搜索结果中进行了多次尝试后,我的最终解决方案是将127.0.0.1 localhost添加到C:\Windows\System32\drivers\etc\hosts

希望能帮到你!

从seleniumhq.org下载最新的驱动程序(chrome或IE),并使用下面的代码

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

这对我有用。

在selenium中此错误消息:

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中使用selenium。 SOAPUI似乎将默认代理设置为nullProxySelector.setDefault(null) )。 因此,当selenium获取默认代理并在其上调用方法时,将抛出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 = new ArrayList() 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() 

在此示例中,我以groovy方式扩展ProxySelector抽象类,以设置至少一个直接代理。 如果有必要,也可以使用Proxy类来配置无直接代理并将其设置在列表中,但是使用此代码我试图避免由于SOAPUI ProxySelector.setDefault(null)而导致的NPE

它已经告诉你发生了什么:

 //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文件夹中,尤其是如果您没有工作站的管理员权限。 使用像C:/WebDrivers/hromedriver.exe这样的smt

这可能是您正在使用的’selenium’,’chrome browser version’和’chrome driver’版本之间的兼容性问题。

你正在使用Selenium 2.53(和我一样),然后使用chrome驱动程序2.25应该适合你。

你可以从这里下载 – https://chromedriver.storage.googleapis.com/index.html?path=2.25/