2012-06-05 3 views
0

Selenium Java/Firefox Eclipse 플러그인을 사용하여 Webapp 테스트를 자동화하려고합니다. 나는 모든 지불 된 정보를 제거하기 위하여 지불하고 그 후에 과자를 삭제하는 것을 시도하고있다. 어떤 이유로이 작동하지 않습니다. Selenium Java ~ 쿠키를 예상대로 삭제하지 않음

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(); 
} 

그러나 쿠키가 실제로 삭제되는 것처럼 보일 나던. 나는 좀 붙어있다. 어떤 도움을 주시면 감사하겠습니다.

+0

허. ['deleteAllCookies()'] (http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebDriver.Options.html#deleteAllCookies%28%29) 메소드 삭제 만 현재 도메인의 쿠키 다른 도메인의 쿠키가 있습니까? 이러한 안전한 것들은 로컬로 실행하더라도 "자신의"사이트에 부착 된 자체 마스터/비자 쿠키를 갖는 경향이 있습니다. 사이트와 상호 작용이 있습니까? 즉, 매번 Firefox를 다시 시작하고 새 프로파일을 만들 수 있습니다. 느리지 만 해결 방법이 없다면 도움이 될 것입니다. –

+0

...'deleteAllCookies()'다음에 [getCookies()'] (http://selenium.googlecode.com/svn/trunk/docs/api/java/org/openqa/selenium/WebDriver)가 무엇입니까? Options.html # getCookies % 28 % 29) return? –

+0

음, 웹 기반 쿠키는 쿠키가 제거되면 삭제되어야하는 토큰 만 보유하고 있습니다. 그러나 그것은 일어나지 않았습니다. getCookies()를 시도했지만 쿠키 수가 감소했지만 아무 것도 변경되지 않았습니다. – 1000Suns

답변

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(); 
} 

우아한 해결책은 아니지만 내가해야 할 일에 효과적입니다. 새 인스턴스를 만드는 것은 기본적으로 쿠키를 삭제하는 것과 같습니다.

관련 문제