Selenium Java~未按预期删除Cookie
我正在尝试使用SeleniumJava/FirefoxEclipse插件自动测试webapp。 我正在尝试付款,然后删除cookies,以删除所有存储的信息。由于某种原因,这不起作用Selenium Java~未按预期删除Cookie,java,jakarta-ee,selenium,Java,Jakarta Ee,Selenium,我正在尝试使用SeleniumJava/FirefoxEclipse插件自动测试webapp。 我正在尝试付款,然后删除cookies,以删除所有存储的信息。由于某种原因,这不起作用 public void validationCards(BufferedWriter out){ outFile = out; ArrayList<String> methodList = new ArrayList<String>(); methodList.add
public void validationCards(BufferedWriter out){
outFile = out;
ArrayList<String> methodList = new ArrayList<String>();
methodList.add("validationVisaFrench");
methodList.add("validationMCFrench");
methodList.add("validationDiscoverFrench");
methodList.add("validationDinerClubFrench");
methodList.add("validationJCBFrench");
Method method = null;
for(String testToRun:methodList){
try{
method = this.getClass().getMethod(testToRun);
}catch(NoSuchMethodException e){
System.out.println("This failed horribly");
e.printStackTrace();
}catch(RuntimeException ex){
ex.printStackTrace();
}catch (Exception e) {
e.printStackTrace();
}
try{
PPSCTests tempObj = this;
this.testDriver.manage().deleteAllCookies();
method.invoke(tempObj);
this.testDriver.manage().deleteAllCookies();
}catch (Exception e) {
System.out.println("Cant invoke method for shits and giggles");
e.printStackTrace();
}
}
}
但是看起来并没有任何cookies被删除。我有点困了。任何帮助都将不胜感激。因此deleteAllCookies()的功能不起作用。也没有删除所有VisibleCookies()。我为支付方法创建了一个新的WebDriver实例
public void payment(String ccNumber, String queryType){
WebDriver driverTest = new FirefoxDriver(profile);
this.testDriver = driverTest; //then assigning it to the local WebDriver
if(queryType.equals("query"))
testDriver.get(testUrl + query());
else if(queryType.equals("queryClean"))
testDriver.get(testUrl + queryClean());
else {
System.out.println(testUrl + frenchQuery());
testDriver.get(testUrl + frenchQuery());
}
testSelenium.waitForPageToLoad("7000");
WebElement ccElement1 = null;
WebElement ccExpiryElement = null;
ccElement1 = testDriver.findElement(By.id("ccNumber"));
ccExpiryElement = testDriver.findElement(By.id("ccExpiryDate"));
WebElement cvv2Element1 = testDriver.findElement(By.name("ccCvv2"));
ccElement1.sendKeys(ccNumber);
ccExpiryElement.sendKeys("1112");//MMYY
cvv2Element1.sendKeys("1111");
WebElement submit = testDriver.findElement(By.id("oneTouchSubmit"));
submit.submit();
testSelenium.waitForPageToLoad("10000");
//driverTest.close();
}
这不是一个优雅的解决方案,但它能满足我的需要。创建新实例的工作原理基本上与删除cookies相同。Huh。该方法仅删除当前域的Cookie。您确定没有来自其他域的cookie吗?这些安全的东西往往有自己的万事达卡/Visa Cookie连接到“他们的”网站,即使你在本地运行它。与他们的网站有互动吗?也就是说,您可以每次重新启动Firefox并创建一个新的配置文件。这很慢,但如果没有解决方案,肯定会有帮助……在您
deleteAllCookies()
之后,返回什么?嗯,基于web的cookie只包含一个令牌,如果删除cookie,该令牌应该被删除。但那并没有发生。我尝试了getCookies(),cookies的数量减少了,但没有任何变化。我通过“作弊”使它起作用。发布我现在同意的答案。
public void payment(String ccNumber, String queryType){
WebDriver driverTest = new FirefoxDriver(profile);
this.testDriver = driverTest; //then assigning it to the local WebDriver
if(queryType.equals("query"))
testDriver.get(testUrl + query());
else if(queryType.equals("queryClean"))
testDriver.get(testUrl + queryClean());
else {
System.out.println(testUrl + frenchQuery());
testDriver.get(testUrl + frenchQuery());
}
testSelenium.waitForPageToLoad("7000");
WebElement ccElement1 = null;
WebElement ccExpiryElement = null;
ccElement1 = testDriver.findElement(By.id("ccNumber"));
ccExpiryElement = testDriver.findElement(By.id("ccExpiryDate"));
WebElement cvv2Element1 = testDriver.findElement(By.name("ccCvv2"));
ccElement1.sendKeys(ccNumber);
ccExpiryElement.sendKeys("1112");//MMYY
cvv2Element1.sendKeys("1111");
WebElement submit = testDriver.findElement(By.id("oneTouchSubmit"));
submit.submit();
testSelenium.waitForPageToLoad("10000");
//driverTest.close();
}