我正在尝试使用Selenium Java / Firefox Eclipse插件自动测试webapp。 我正在尝试付款然后删除cookie,以删除所有存储的信息。出于某种原因,这不起作用。
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();
}
}
}
这是我尝试运行的其中一项测试的示例:
public void validationMCFrench(){
System.out.println("MC French Stored Card");
this.testDriver.manage().deleteAllCookies();
payment("5555555555554444", "frenchQuery");
testSelenium.waitForPageToLoad("20000");
String source = Jsoup.parse(testDriver.getPageSource()).text();
System.out.println("validationMCFrench: "+source);
successOrFail(source, "validationMCFrench", "Example");
this.testDriver.manage().deleteAllCookies();
}
但似乎没有任何cookie被删除。我有点卡住了。任何帮助都会受到赞赏。
答案 0 :(得分:0)
所以deleteAllCookies()的东西不起作用。 deleteAllVisibleCookies()也没有。我开始为付款方式创建一个新的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();
}
它不是一个优雅的解决方案,但它适用于我需要做的事情。创建新实例基本上与删除cookie一样。