2010-06-15 6 views
1

값이 동적으로 생성되는 목록 상자가 있습니다. 목록 상자에는 달과 연도 및 생성 된 모양이 다음과 같이 표시됩니다.동적으로 생성 된 목록 상자에서 날짜 값 선택

<select name="arr_dtm_mon_year" tabindex="150" class="input"> 
    <option value=""></option> 
    <option value="NOV 09">Nov 09</option> 
    <option value="DEC 09">Dec 09</option> 
    <option value="JAN 10">Jan 10</option> 
    <option value="FEB 10">Feb 10</option> 
    <option value="MAR 10">Mar 10</option> 
    <option value="APR 10">Apr 10</option> 
    <option value="MAY 10">May 10</option> 
    <option value="JUN 10" selected>Jun 10</option> 
    <option value="JUL 10">Jul 10</option> 
    <option value="AUG 10">Aug 10</option> 
    <option value="SEP 10">Sep 10</option> 
    <option value="OCT 10">Oct 10</option> 
</select> 

기본적으로 선택된 목록 상자의 요소는 현재 월입니다. 셀레늄 IDE를 사용하여이 목록 상자에서 선택하면 잘 작동합니다. 다음은 목록 상자에서 선택하는 명령 예입니다.

<tr> 
    <td>select</td> 
    <td>arr_dtm_mon_year</td> 
    <td>label=Oct 10</td> 
</tr> 
<tr> 
    <td>select</td> 
    <td>arr_dtm_mon_year</td> 
    <td>label=May 10</td> 
</tr> 

이제 문제는 목록 상자의 값이 동적으로 생성된다는 것입니다. 위의 예제에서 "5 월 10 일"옵션을 선택했습니다. 생성 된 값은 이전 6 개월의 목록과 모든 향후 6 개월의 목록입니다.

이것은 기본적으로 6 개월 후 테스트를 다시 실행하면 "5 월 10 일"이 목록에서 사용 가능하지 않음을 의미합니다. 값을 동적으로 선택할 수 있습니까? 예를 들어, 먼저 현재 달을 계산하고 그 달을 현재 달 + 1 (즉, 다음 달)로 선택할 수 있습니다. 또한 다음 달이 무엇인지 결정한 후에 내가 선택할 값을 어떻게 만들 수 있습니까?

도움이 될 것입니다.

답변

2

목록의 위치에 따라 항목을 선택할 수 있습니다 (색인 생성 없음). 당신은 또한 값 귀하의 선택의 레이블을 알고있는 (또는 원래의 코드와 같은 레이블로 선택하는 데 사용하려는) 다음을 사용할 수 있습니다하려면

<tr> 
    <td>select</td> 
    <td>name=arr_dtm_mon_year</td> 
    <td>index=2</td> 
</tr> 

: 다음은 세 번째 항목을 선택합니다 : 다음과 같이

<tr> 
    <td>storeText</td> 
    <td>css=select[name=arr_dtm_mon_year] option:nth-child(3)</td> 
    <td>label</td> 
</tr> 

당신은 다음을 사용할 수 있습니다 의미가

<tr> 
    <td>select</td> 
    <td>name=arr_dtm_mon_year</td> 
    <td>label=${label}</td> 
</tr> 

희망을! :)

+0

네, 그렇습니다. 작동한다면 이것은 훌륭합니다. 나쁘게 곧바로 시도해보십시오. Many Thanks – ziggy

+0

안녕하세요. 완벽하게 작동합니다. n 번째 항목 (또는 색인 2)의 값이 현재 달에 1을 더한 값인지 확인하는 방법이 있습니까? 감사합니다. – ziggy

+0

가능합니다. 다른 솔루션이므로 별도의 답변으로 추가했습니다. –

2

storeEval을 사용하여 다음 달 (다음 달은 1 월)을 계산할 수 있습니다. 아래에 작동 예제가 나와 있습니다.

<tr> 
    <td>storeEval</td> 
    <td>var months = new Array("Jan", "Feb", "Mar", "Apr", "May", "Jun", "Jul", "Aug", "Sep", "Oct", "Nov", "Dec"); var now = new Date(); if (now.getMonth() == 11) { nextMonth = new Date(now.getFullYear() + 1, 0, 1); } else { nextMonth = new Date(now.getFullYear(), now.getMonth() + 1, 1); } months[nextMonth.getMonth()] + " " + nextMonth.getFullYear().toString().slice(2);</td> 
    <td>label</td> 
</tr> 
<tr> 
    <td>select</td> 
    <td>name=arr_dtm_mon_year</td> 
    <td>label=${label}</td> 
</tr> 

테스트가 더 취약 할 수 있음을 유념하십시오. 그것은 시스템 클록에 의존하며 예상대로 작동하지 않는 엣지 케이스가있을 수 있습니다.

+0

감사합니다. 매우 도움이되었습니다. 나에게 필요한 것을 정확히 얻기 ​​위해 약간의 수정이 필요하지만 나에게 좋은 시작을 주었다. 감사 – ziggy

1

목표 색인 = 질서 (0부터 시작)와 함께 작동한다고 생각합니다.

관련 문제