我正在尝试使用Selenium Webdriver设置然后读取Cookie。 添加Cookie工作正常。 但是,当我尝试读取cookie时,Selenium会抛出异常。
测试用例代码
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)
任何帮助都将非常感激。
答案 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放在我的项目中,瞧...所有的工作没有问题。
我希望它可以帮到你