簡體   English   中英

Selenium UnreachableBrowserException - SoapUI Groovy TestStep 中的“無法啟動新會話”

[英]Selenium UnreachableBrowserException - "Could not start a new session" in 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.<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() ,並得到了同樣的錯誤。

我遇到了同樣的錯誤,它說:

org.openqa.selenium.remote.UnreachableBrowserException:無法啟動新會話。 可能的原因是遠程服務器地址無效或瀏覽器啟動失敗。

chromedriver.exe啟動正常。 我可以在任務管理器中看到它。

我的環境如下,

  • Windows 7,終極版,64 位系統
  • selenium-server-standalone-2.47.1
  • 鉻驅動程序 2.19
  • 谷歌瀏覽器:45.0

在谷歌結果中建議多次嘗試后,我的最終解決方案是將127.0.0.1 localhost添加到C:\\Windows\\System32\\drivers\\etc\\hosts

希望能幫到你!

從 seleniumhq.org 下載最新的驅動程序(chrome 或 IE),並使用以下代碼

    System.setProperty("webdriver.chrome.driver","<YourPath>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 似乎將默認代理設置為null ( ProxySelector.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> 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方式擴展了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 瀏覽器版本”和“chrome 驅動程序”版本之間的兼容性問題。

如果您使用的是 Selenium 2.53(像我一樣),那么使用 chrome 驅動程序 2.25 應該適合您。

您可以從這里下載 - https://chromedriver.storage.googleapis.com/index.html?path=2.25/

我遇到了同樣的問題,升級到最新的 chrome 驅動程序解決了我的問題。

您可以從以下 URL 下載最新的 chrome 驅動程序。

http://chromedriver.storage.googleapis.com/index.html

最好始終使用最新版本。 下載后,在 System.setProperty("webdriver.chrome.driver","{你的路徑 Chrome Driver}"); 中設置 chrome 驅動程序的路徑;

    System.out.println("Creating Chrome Driver");
 // Set Chrome Driver
    System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");

    WebDriver driver = new ChromeDriver();
    driver.get("{Your URL}");

如果有人在 Ubuntu 上遇到類似問題,請檢查您是否安裝了 Chrom ium網絡瀏覽器在此處輸入圖片說明

只有 chrome 瀏覽器是不夠的。

更多細節

這個問題完全和chrome瀏覽器版本和chrome驅動版本有關。

一旦您保持瀏覽器和驅動程序版本相同,您的問題就會得到解決。

要檢查 Chrome 版本,請執行以下步驟 ->> 單擊三個垂直點 ->> 幫助 ->> 關於 Google Chrome 瀏覽器 ->> 查看 chrome 版本。

在此處輸入圖片說明

現在檢查 chrome BROWSER 版本

在此處輸入圖片說明

在我的情況下,瀏覽器版本是 90.0

現在下載與操作系統相同版本的chrome驅動程序

我們將下載90.0版本的驅動,然后設置瀏覽器路徑 System.setProperty("webdriver.chrome.driver", "D:\\chromedriver.exe");

WebDriver driver = new ChromeDriver();
driver.get("{Your URL}")

#JAVA #硒

在此處輸入圖片說明

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM