2015-03-03 38 views
1

請幫忙解決下面的問題。SoapUI項目執行後的WebDriver異常

我正在使用Eclipse.My主類調用2下面的類/ java文件。

1)Invoke_SoapUI_Project.java(執行SOAP UI項目) 2)Run_Selenium_Script.java(這將打開Firefox中的一個URL)。

我的主函數調用上面的Invoke_SoapUI_Project.java並觸發執行「SOAP UI XML Project」,它運行良好。

然後我的第二個功能「Run_Selenium_Script.java」調用,它試圖打開網頁的一個。但是在我定義對象的行中得到下面的錯誤。即driver= new firefoxDriver();

但是,如果我評論Invoke_SoapUI_Project.java,那麼我不會得到低於例外,firefox對象創建正確,它會打開我的URL。

以下例外我得到:

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.44.0', revision: '76d78cf323ce037c5f92db6c1bba601c2ac43ad8', time: '2014-10-23 13:11:40' 
System info: host: 'BDC8-L-HP26ZR1', ip: '127.0.0.1', os.name: 'Windows 7', os.arch: 'x86', os.version: '6.1', java.version: '1.8.0_31' 
Driver info: driver.version: FirefoxDriver 
    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.firefox.FirefoxDriver.<init>(FirefoxDriver.java:191) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:186) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:182) 
    at org.openqa.selenium.firefox.FirefoxDriver.<init>(FirefoxDriver.java:99) 
    at Services.CommonFunctions.setUp(CommonFunctions.java:1481) 
    at Services.CommonFunctions.obj_run(CommonFunctions.java:1631) 
    at Services.CSS_Validation_a.print(CSS_Validation_a.java:283) 
    at Services.CSS_main.main(CSS_main.java:67) 
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:76) 
    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:72) 
    at org.apache.http.impl.client.CloseableHttpClient.execute(CloseableHttpClient.java:57) 
    at org.openqa.selenium.remote.HttpCommandExecutor.fallBackExecute(HttpCommandExecutor.java:215) 
    at org.openqa.selenium.remote.HttpCommandExecutor.execute(HttpCommandExecutor.java:184) 
    at org.openqa.selenium.firefox.internal.NewProfileExtensionConnection.execute(NewProfileExtensionConnection.java:165) 
    at org.openqa.selenium.firefox.FirefoxDriver$LazyCommandExecutor.execute(FirefoxDriver.java:362) 
    at org.openqa.selenium.remote.RemoteWebDriver.execute(RemoteWebDriver.java:572) 
    ... 10 more 

回答

0

由於每link

您需要設置Firefox的驅動程序,並提供它作爲系統屬性。 對於如: System.setProperty("webdriver.firefox.driver", "c:/webdriver/firefoxdriverpath");

+0

嗨,我仍然面臨問題,我完全封鎖在這裏。請幫幫我。每次執行SOAP UI代碼後都會發生瀏覽器異常。瀏覽器異常發生在我試圖創建驅動程序對象時:driver = new firefoxdriver(); – Yuvaraja 2015-03-06 03:09:21

+0

你是否按照提到的鏈接?可以發佈代碼? – Rao 2015-03-06 03:27:50

2

我們偶然發現這似乎這裏是同樣的問題(我們花了相當長的一段時間),但我們設法解決它:

這個問題似乎是了SoapUI設置默認proxyselector爲null並且Apache httpclient不期待這個。

重現問題:

WsdlProject wsdlProject = new WsdlProject(""); 
WebDriver driver = new FirefoxDriver(); 

解決方法:

ProxySelector proxy = ProxySelector.getDefault(); 
WsdlProject wsdlProject = new WsdlProject(""); 
ProxySelector.setDefault(proxy); 
WebDriver driver = new FirefoxDriver(); 

沛東,胡發補丁給獨立的前兩天(接過液從那裏): https://github.com/Ardesco/selenium-standalone-server-plugin/issues/23

我已經提交硒的錯誤報告,將更新它的細節:https://github.com/SeleniumHQ/selenium/issues/388

我也要爲SoapUI提交報告。

0

使用SoapUI時我也發現這個問題5.我檢查了源代碼。 在類ProxyUtils中,如果您未設置代理或將代理設置爲自動,則方法setGlobalProxy()將設置proxySelector爲空。

public static void setGlobalProxy(Settings settings) 
    { 
    ProxySelector proxySelector = null; 
    ProxySettingsAuthenticator authenticator = null; 
    if(proxyEnabled) 
    { 
     if(autoProxy) 
     { 
     proxySelector = new ProxyVoleUtil().createAutoProxySearch().getProxySelector(); 
     } 
     else 
     { 
      proxySelector = getManualProxySelector(settings); 
     } 
     if(proxySelector != null) 
     { 
      // Don't register any proxies for other schemes 
      proxySelector = filterHttpHttpsProxy(proxySelector); 
     } 
     authenticator = new ProxySettingsAuthenticator(); 
    } 
    *ProxySelector.setDefault(proxySelector);* 
    Authenticator.setDefault(authenticator); 
    HttpClientSupport.setProxySelector(proxySelector); 
    HttpClientSupport.getHttpClient().setCredentialsProvider(getProxyCredentials(settings)); 
    } 

在Windows操作系統中,proxySelector = new ProxyVoleUtil().createAutoProxySearch().getProxySelector();也將爲空。

if (PlatformUtil.getCurrentPlattform() != PlatformUtil.Platform.WIN) { 
      proxySearch.addStrategy(ProxySearch.Strategy.BROWSER); 
      // For Windows both BROWSER and OS_DEFAULT will end up with an IEProxySearchStrategy. 
      // The call in createPacSelector to winHttpDetectAutoProxyConfigUrl is quite slow and we don't want to do it twice. 
     } 

我的解決方法是修改ProxyUtils類。更改ProxySelector.setDefault(proxySelector);

if(proxySelector != null){ 
     ProxySelector.setDefault(proxySelector); 
    } 
    else{ 
     proxySelector = ProxySelector.getDefault(); 
    } 

然後,我用我自己的ProxyUtils.class,經過WinRAR或者7Z更新soapui-xxx.jarProxyUtils.class(在SOAPUI_HOME\bin\)。現在我的SoapUI工作得很好。