Selenium Java~不按预期删除cookie

时间:2012-06-05 16:03:24

标签: java java-ee selenium

我正在尝试使用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被删除。我有点卡住了。任何帮助都会受到赞赏。

1 个答案:

答案 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一样。