当前位置: 首页 > 知识库问答 >
问题:

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

秦育
2023-03-14

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

为此,我添加了selenium独立服务器。jarv2。45.0在$SOAP\u HOME$\bin\ext文件夹中。

我的Groovy测试步骤代码:

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独立服务器之后,我尝试通过netbeanside运行这段代码。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(),得到了同样的错误。

共有3个答案

柴阳云
2023-03-14

在此错误消息中:

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

可能有很多原因。但是,在这种情况下查看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似乎将默认代理设置为nullProxySelector.setDefault(null))。因此,当selenium获得默认代理并对其调用方法时,会抛出一个NullPointerExc0019

问题是您在SOAPUI中执行代码,因此在SOAPUI将其设置为null之前无法获取默认代理。。。然后,Groovy测试步骤中有一个可能的解决方法,在执行WebDriver之前,尝试创建一个ProxySelector并将其设置为默认值:

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类来配置一个没有直接代理并将其设置在列表中,但是使用这段代码,我试图避免由于SOAPUIProxyS而导致的NPEelector.set默认(空)

卫诚
2023-03-14

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

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

这对我有用。

封俊艾
2023-03-14

我也遇到过同样的错误,上面写着:

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

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

我的环境如下:,

  • windows 7,ultimate,64位系统

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

希望对您有所帮助!

 类似资料:
  • 我正试图使用Appium从mac上的Android应用程序启动我的应用程序。应用程序 或使用我的代码,但我得到一个错误 无法启动新会话。 确保Appium服务器运行的应用程序是通过使用Appium中的“App Path”参数打开的。应用程序(以及适用于Android的软件包和 活动)或通过连接selenium客户端,并 在所需的功能对象中提供此功能。" 下面是我的Appium日志,我在这里做错了什

  • 我正在尝试使用selenium java代码打开firefox浏览器。 Selenium服务器已启动并正在运行。我尝试使用命令提示符更改selenium服务器端口,并在代码中设置端口,但两者都不起作用。 在错误消息“连接到localhost:6544”中,它每次都试图连接到不同的localhost。有人能看出问题出在哪里吗? 我使用的版本有: firefox 48.0 另外,我的geckodriv

  • 我在所有浏览器中都遇到了这个例外。例如,我在chrome上创建了一个远程webdriver,如下所示: 我得到了UnreachableBrowserException如下: 但我在<代码>http://myIP:4444/grid/console,一切正常,节点仍然注册。然后在<代码>http://myIP:5555/wd/hub/static/resource/hub.html,我仍然可以单击“

  • 问题内容: 我刚接触selenium。我生成了我的第一个Javaselenium测试用例,它已成功编译。但是当我运行该测试时,我得到了以下RuntimeException 请告诉我如何解决此错误。 这是我要运行的Java文件。 我首先通过命令提示符启动了selenium服务器,然后通过另一个命令提示符执行了上述java文件。 第二个问题:我可以右键单击包含selenium的网页上的指定位置。 问题

  • 问题内容: 当我在Chrome上运行测试时,经常会收到一个WebdriverException,指出Chrome无法访问。并非每次都这样。也许每15次一次。我必须在Windows计算机上运行所有程序,并且具有最新的Chrome,Chromedriver,Selenium- Webdriver版本。 我尝试设置环境变量“ DBUS_SESSION_BUS_ADDRESS = / dev / null

  • 在通过Jenkins使用Docker-compose在网格上动态执行我的套件时,我得到了以下异常stackTrace: 我的中心网址 : “http://selenium-hub:4444/wd/hub” 当在本地系统上执行相同的代码时,Docker容器上的一切都运行良好。只有当我从詹金斯那里触发我的测试时,问题才会出现。