0

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

  1. 我正在使用 Selenium 的 Java API。
  2. 测试用例使用 TestNG 运行。5.12 版
  3. Selenium 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)

任何帮助将不胜感激。

4

2 回答 2

0

问题是似乎缺少的方法getSecure()org.apache.commons.httpclient.Cookie

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

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

于 2012-06-07T08:40:43.153 回答
0

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

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

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

希望对你有帮助

于 2015-05-06T17:44:34.443 回答