使用Selenium 2 HTMLUnit Webdriver读取cookie时出现异常

时间:2012-05-31 11:37:49

标签: selenium webdriver

我正在尝试使用Selenium Webdriver设置然后读取Cookie。 添加Cookie工作正常。 但是,当我尝试读取cookie时,Selenium会抛出异常。

  1. 我正在使用Selenium的Java API。
  2. 使用TestNG运行测试用例。 ver 5.12
  3. Selenium webdriver-htmlunit version 0.9.7376
  4. 测试用例代码

          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)
    

    任何帮助都将非常感激。

2 个答案:

答案 0 :(得分:0)

问题是getSecure()上的方法org.apache.commons.httpclient.Cookie似乎缺失了。

您似乎已进入JAR hell,并且项目中的某些库/依赖项在org.apache.commons.httpclient版本中相互冲突。您使用的WebDriver需要3.1版。检查项目的所有依赖项,找到有问题的库以及真正进入类路径的httpclient版本。

尝试使用两者中较新的一个 - 如果这没有帮助,祝你好运:)。

答案 1 :(得分:0)

我不知道我的解决方案是否对您有所帮助,但我会尝试。

我遇到了类似的问题...当我使用HtmlUnit Webdriver,并且我想下载文件时,当我必须将WebDriver与CookiesStore链接时,我的应用程序无效,并且既不显示错误也不显示异常...

经过多次搜索和调试我的应用程序,我发现HtmlUnit通过内省加载了几个库...其中一个是gson(在我的例子中,gson-2.3.1.jar)(显然,我的项目不需要这个库..错了!)。 所以,我把这个lib放在我的项目中,瞧...所有的工作没有问题。

我希望它可以帮到你