2010-01-05 4 views
1

테스트 부담을 덜기 위해 Selenium을 사용하고 있으며, 테스트해야하는 약 1,000 개의 드롭 다운 목록 조합 (여러 페이지에 걸쳐 있고 드롭 다운 목록)이 있습니다. 기본적으로, 각 < > 을 선택하고, 제출 단추를 클릭하고 결과 페이지의 드롭 다운 목록에서 항목 (첫 번째, 두 번째, 세 번째 등)을 선택하고 각 페이지에서 다음을 클릭하십시오. 제출하고 다시 돌아가서 다음 항목을 순서대로 선택하십시오. 매번 최종 페이지에 특정 값 (선택된 드롭 다운 목록 값과 관련 있음)이 있어야한다고 주장해야합니다. Selenium에서 이런 종류의 논리가 가능하다는 것을 아는 사람이 있습니까? 그것은 나는 레코더가 재생되는 동안 드롭 다운 목록에서 값을 선택했지만 :Selenium : Loop Through Each <option> 드롭 다운 목록

그래서 희망이 의사 코드는 일까지

foreach option in select 
    select option 
    submit form 

    foreach option in select 
    select option 
    submit form 

     assert that page contains text that matches selected values

편집을 지우고,이 설명하는 힘든 시간을 보내고있어 레코더가 선택한 드롭 다운 목록 값을 선택하지 않는 것 같습니다. 또한 각각 < 옵션 >에 대해 작업을 수행하는 방법을 알아 내기 위해 < >을 선택할 수 없었습니다.

내가 가진 첫 번째 질문은 그것이 가능한지 여부입니다. 그렇다면, 누군가 나를 올바른 방향으로 가르쳐 주시겠습니까?

편집 2 : 다른 웹 자동화 테스트 유틸리티를 사용하는 것에 반대하지 않습니다. 누구든지 무료 대안에 대한 권장 사항이있는 경우 언제든지 해당 권장 사항을 작성하십시오.

답변

3

셀렌이 사용하는 언어는 무엇입니까? Selenium을 HTML로 작성한다면 프로그래밍 언어로 전환하고 Selenium RC 바인딩을 사용하는 것이 좋습니다. Java 및 Python과 같은 다양한 언어에 사용할 수 있습니다.

void test(Selenium browser, String startPageUrl, 
      String firstFormLocator, String firstSelectLocator, 
      String secondFormLocator, String secondSelectLocator) { 
    browser.open(startPageUrl); 
    for (String option : browser.getSelectOptions(firstSelectLocator)) { 
     browser.open(startPageUrl); 
     browser.select(firstSelectLocator, "label=" + option); 
     browser.submit(firstFormLocator); // Or click the submit button 
     for (String subOption : browser.getSelectOptions(secondSelectLocator) { 
      browser.open(startPageUrl); 
      browser.select(firstSelectLocator, "label=" + option); 
      browser.submit(firstFormLocator); // Or click the submit button 
      browser.select(secondSelectLocator, "label=" + subOption); 
      browser.submit(secondFormLocator); // Or click the submit button 
      // Do your assertions 
     } 
    } 
} 

코드는 정확히 읽을 수없는, 그래서 약간 페이지 개체 패턴을 사용하여 멀리 페이지를 추출 시간이 가치가있을 수도 있습니다 : 자바에서 나는 다음 당신이 원하는 것을 할 것이라고 생각합니다. 이것은 또한 요소의 ID를 변경할 때 모든 테스트가 아닌 페이지 객체에서 변경하기 만하면되는 등 코드 유지 관리에 도움이됩니다.

이 1000 번을 수행하는 것이 빠르지 않을 수도 있음을 명심하십시오. 웹 인터페이스 바로 아래에서 유사한 테스트를 수행하여 테스트에서보다 빨리 피드백을 받고 웹 인터페이스가 하위 계층을 올바르게 테스트하는지 확인하는 것이 좋습니다. 또한 1000 개의 테스트가 필요합니까? 여기에 테스트 할 때 약간의 중복이있는 것 같습니다. 마지막 999 개가 통과하면 1000 번째 테스트가 실패 할 것입니까?

+0

예를 들어 foreach를하고 싶지 않으면'index ='기능을 사용할 수도 있습니다. (firstSelectLocator, "index ="+ i.toString(); ....) {int i = 0; i AutomatedTester