0

Selenium Java/Firefox Eclipse プラグインを使用して Web アプリケーションのテストを自動化しようとしています。支払いを行ってから 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();
        }
    }
}

これは、実行しようとしているテストの 1 つのサンプルです。

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 が実際に削除されているようには見えません。私はちょっと立ち往生しています。どんな助けでも大歓迎です。

4

1 に答える 1

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 の削除と同じように機能します。

于 2012-06-06T15:46:55.213 に答える