web-dev-qa-db-ja.com

Selenium UnreachableBrowserException-SoapUI Groovy TestStepで「新しいセッションを開始できませんでした」

Win7 x32でSoapUI Pro 5.1.2を使用し、Groovy TestStepでSelenium Webdriverに接続しようとしました。

この目的のために、私は_Selenium-standalone-server.jar_ v2.45.0を_$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
_

空のJavaプロジェクトに同じ_Selenium-standalone-server.jar_パッケージを追加した後、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.<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()を使用しようとしましたが、同じエラーが発生しました。

12
Maxim Romanyuk

同じエラーが発生しました。

org.openqa.Selenium.remote.UnreachableBrowserException:新しいセッションを開始できませんでした。考えられる原因は、リモートサーバーの無効なアドレスまたはブラウザの起動エラーです。

しかし、chromedriver.exe順調に始まった。タスクマネージャーで確認できます。

私の環境は次のとおりです、

  • windows 7、究極の64ビットシステム
  • Selenium-server-standalone-2.47.1
  • chromedriver 2.19
  • グーグルクローム:45.0

Googleの結果で多くの試みが提案された後、私の最終的な解決策は127.0.0.1 localhostからC:\Windows\System32\drivers\etc\hosts

あなたを助けることを願っています!

12
xjfengck

Seleniumhq.orgから最新のドライバー(chromeまたはIE)をダウンロードし、以下のコードを使用します

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

これは私のために働いた。

6
Yash Jagdale

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をnullに設定する前にデフォルトのプロキシを取得できないため、SOAPUI内でコードを実行することです。その後、可能な回避策は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抽象クラスをグルーヴィな方法で拡張し、少なくとも1つの直接プロキシを設定します。必要に応じて、Proxyクラスを使用して直接プロキシを構成せずにリストに設定することもできますが、このコードでは、SOAPUIによるNPEを回避しようとしていますProxySelector.setDefault(null)

3
albciff

これは、使用している「Selenium」、「chrome browser version」、および「chrome driver」バージョン間の互換性の問題である可能性があります。

(私のように)Selenium 2.53を使用している場合は、chromeドライバー2.25を使用すると動作します。

こちらからダウンロードできます- https://chromedriver.storage.googleapis.com/index.html?path=2.25/

0
Santosh Pillai

既に何が起こったのかを教えてくれました。

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

次のいずれかの方法を使用して、パスを定義してみてください。

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

また、特にワークステーションの管理者権限がない場合は、chromedriver.exeをsystem32フォルダーに保存することはお勧めしません。 C:/WebDrivers/hromedriver.exeのようなsmtを使用します

0
Ivan Litskevich