2012-05-31 31 views
0

我嘗試設置並使用Selenium Webdriver讀取Cookie。 添加Cookie工作正常。 但是,當我試圖讀取cookie時,Selenium拋出了一個異常。使用Selenium 2讀取cookie時的異常HTMLUnit Webdriver

  1. 我正在使用Selenium的Java API。
  2. 測試用例使用TestNG運行。版本5.12
  3. 硒的webdriver-版本的HtmlUnit 0.9.7376

測試用例代碼

 import org.openqa.selenium.WebDriver; 
     import org.openqa.selenium.Cookie; 
     . 
     . 
     . 
     WebDriver driver = .... 
    // Now set the cookie. This one's valid for the entire domain 

    Cookie testCookie = new Cookie.Builder("myCookie", "cookieValue").domain("localhost").path("/").build(); 
    //Works fine till here 
    driver.manage().addCookie(testCookie); 

    //breaks here 
    String cookieFromBrow = driver.manage().getCookieNamed("myCookie").toString(); 
    System.out.println("Cookie :- [" + cookieFromBrow + "]"); 

堆棧跟蹤

java.lang.NoSuchMethodError: org.openqa.selenium.internal.ReturnedCookie.<init>(Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/lang/String;Ljava/util/Date;Z)V 
at org.openqa.selenium.htmlunit.HtmlUnitDriver$HtmlUnitOptions.getCookies(HtmlUnitDriver.java:851) 
at org.openqa.selenium.htmlunit.HtmlUnitDriver$HtmlUnitOptions.getCookieNamed(HtmlUnitDriver.java:812) 
at com.medomain.site.test.SampleResultPageIntlITCase.initTestPage(SampleResultPageIntlITCase.java:150) 
at com.medomain.site.test.SampleResultPageIntlITCase.testFindCaseForm(SampleResultPageIntlITCase.java:123) 
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 
at sun.reflect.NativeMethodAccessorImpl.invoke(Unknown Source) 
at sun.reflect.DelegatingMethodAccessorImpl.invoke(Unknown Source) 
at java.lang.reflect.Method.invoke(Unknown Source) 
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:80) 
at org.testng.internal.Invoker.invokeMethod(Invoker.java:702) 
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:894) 
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1219) 
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:127) 
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:111) 
at org.testng.TestRunner.privateRun(TestRunner.java:768) 
at org.testng.TestRunner.run(TestRunner.java:617) 
at org.testng.SuiteRunner.runTest(SuiteRunner.java:334) 
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:329) 
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:291) 
at org.testng.SuiteRunner.run(SuiteRunner.java:240) 
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:53) 
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:87) 
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1185) 
at org.testng.TestNG.runSuitesLocally(TestNG.java:1110) 
at org.testng.TestNG.run(TestNG.java:1022) 
at org.testng.remote.RemoteTestNG.run(RemoteTestNG.java:109) 
at org.testng.remote.RemoteTestNG.initAndRun(RemoteTestNG.java:202) 
at org.testng.remote.RemoteTestNG.main(RemoteTestNG.java:173) 

任何幫助將是雷爾y讚賞。

+0

你的版本又是什麼?目前的Selenium版本是2.22.0,這是使用HtmlUnit 2.9。 –

+0

是的,我們使用的是舊版本,但它支持Cookie。 – arai

回答

0

問題是org.apache.commons.httpclient.Cookie上的方法getSecure()似乎缺少。

您似乎已經輸入JAR hell,並且項目中的某些庫/依賴項在org.apache.commons.httpclient版本中彼此衝突。您使用的WebDriver需要版本3.1。檢查項目中的所有依賴關係,找到違規的庫以及真正進入類路徑的httpclient的版本。

嘗試使用兩者中較新的一個 - 如果沒有幫助,祝你好運:)。

+0

是的,這是一個JAR地獄問題。不幸的是,我無法升級jar版本。感謝您的回答。 – arai

0

我不知道我的解決方案能否對您有所幫助,但我會盡力。

我有一個類似的問題...當我使用HtmlUnit Webdriver,我想下載一個文件,當我必須鏈接WebDriver與CookiesStore,我的應用程序不起作用,並且都不顯示錯誤或異常。 。

經過多次搜索和調試我的應用程序,我發現通過內省幾個庫,加載的HtmlUnit ......其中之一是GSON(在我的情況,GSON-2.3.1.jar)(顯然,我的項目沒有按」 t需要這個庫..錯了!)。 所以,我把這個lib放在我的項目中,瞧......所有的作品沒有問題。

我希望它可以幫助你

相關問題