2012-01-13 1 views
1

역동적 인 웹 페이지에서 일치하는 요소의 수를 미리 알지 못하므로 어떤 색인을 사용해야할지 모르겠습니다.Watir-webdriver 마지막으로 일치하는 요소에 먼저 액세스하지 않는 방법은 무엇입니까?

watir-webdriver는 처음에 LAST matching element에 액세스하는 방법을 제공합니까?

문제의 HTML 달력 제어

<table border="0" class="body-style"> 
    <tbody> 
    <tr> 
     <td width="27" align="right"><b>Sun</b></td> 
     <td width="27" align="right"><b>Mon</b></td> 
     <td width="27" align="right"><b>Tue</b></td> 
     <td width="27" align="right"><b>Wed</b></td> 
     <td width="27" align="right"><b>Thu</b></td> 
     <td width="27" align="right"><b>Fri</b></td> 
     <td width="27" align="right"><b>Sat</b></td></tr> 
    <tr> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;1Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;2Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;3Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;4Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;5Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;6Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;7Â&nbsp;</p></td></tr> 
    <tr> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;8Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;9Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;10Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;11Â&nbsp;</p></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;12Â&nbsp;</p></td> 
     <td align="right"><a class="current-day-style selected-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=13;closeCalendar();doOtherFunctions();">Â&nbsp;13Â&nbsp;</a></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;14Â&nbsp;</p></td></tr> 
    <tr> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;15Â&nbsp;</p></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=16;closeCalendar();doOtherFunctions();">Â&nbsp;16Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=17;closeCalendar();doOtherFunctions();">Â&nbsp;17Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=18;closeCalendar();doOtherFunctions();">Â&nbsp;18Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=19;closeCalendar();doOtherFunctions();">Â&nbsp;19Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=20;closeCalendar();doOtherFunctions();">Â&nbsp;20Â&nbsp;</a></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;21Â&nbsp;</p></td></tr> 
    <tr> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;22Â&nbsp;</p></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=23;closeCalendar();doOtherFunctions();">Â&nbsp;23Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=24;closeCalendar();doOtherFunctions();">Â&nbsp;24Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=25;closeCalendar();doOtherFunctions();">Â&nbsp;25Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=26;closeCalendar();doOtherFunctions();">Â&nbsp;26Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=27;closeCalendar();doOtherFunctions();">Â&nbsp;27Â&nbsp;</a></td> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;28Â&nbsp;</p></td></tr> 
    <tr> 
     <td align="right"><p class="end-of-weekday-style">Â&nbsp;29Â&nbsp;</p></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=30;closeCalendar();doOtherFunctions();">Â&nbsp;30Â&nbsp;</a></td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=31;closeCalendar();doOtherFunctions();">Â&nbsp;31Â&nbsp;</a></td></tr> 
    </tbody> 
</table> 

답변

9

을 형성이 일치하는 요소의 컬렉션을 반환합니다

browser.divs(:how => 'what').last 

대부분의 요소에 대한 복수를 (예를 들어 당신이 DIV 요소를 찾고 있습니다 가정) 시도 (예 : 적절한 경우 요소/태그 이름에 s 또는 es을 추가하십시오.) div -> divs, address -> addresses) 그리고 Ruby는 위대한 언어이므로을 통해 컬렉션의 마지막 요소를 빠르게 얻을 수 있습니다.210 방법.

+1

감사합니다, 나는 그것을 생각! 적어도 $ browser.links (: class, "normal-day-style"). last.에 오류없이 액세스했습니다. 내 질문의 시점에서 나는이 문제에 직면했을 요소의 유형을 기억하지 못 했으므로 아직 코드 샘플을 제공하지 않았다. 이 경우에는 해당 팝업 일정 중 하나였으며 해당 시장 날짜 만 핫 링크되었습니다. 아이디어는 앞으로 3 개월 동안 NEXT 화살표를 이미 누를 때까지 가능한 가장 먼 날짜를 선택하는 것이 었습니다. (즉, id = "spanRight".click' x3) – Marcos

+0

은 게시 한 HTML을 기반으로 올바르게 들립니다. –

+2

예 루비는 굉장합니다. 어떤 것들은 다른 언어에서 깊은 속임수와 관련된 바람을 만듭니다. [-2]의 인덱스와 마찬가지로 [2] 마지막 멤버를 얻을 수 있습니다. [3..8] 내게 서브 세트 등을 가져올 수 있습니다. – Marcos

0

tmp post.

문제의 HTML은 팝업 달력입니다 :

<table border="0" class="body-style"> 
    <tbody> 
    <tr> 
     <td width="27" align="right"><b>Sun</b> 
     </td> 
     <td width="27" align="right"><b>Mon</b> 
     </td> 
     <td width="27" align="right"><b>Tue</b> 
     </td> 
     <td width="27" align="right"><b>Wed</b> 
     </td> 
     <td width="27" align="right"><b>Thu</b> 
     </td> 
     <td width="27" align="right"><b>Fri</b> 
     </td> 
     <td width="27" align="right"><b>Sat</b> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;1Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;2Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;3Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;4Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;5Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;6Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;7Â&nbsp;</p> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;8Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;9Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;10Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;11Â&nbsp;</p> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;12Â&nbsp;</p> 
     </td> 
     <td align="right"><a class="current-day-style selected-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=13;closeCalendar();doOtherFunctions();">Â&nbsp;13Â&nbsp;</a> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;14Â&nbsp;</p> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;15Â&nbsp;</p> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=16;closeCalendar();doOtherFunctions();">Â&nbsp;16Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=17;closeCalendar();doOtherFunctions();">Â&nbsp;17Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=18;closeCalendar();doOtherFunctions();">Â&nbsp;18Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=19;closeCalendar();doOtherFunctions();">Â&nbsp;19Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=20;closeCalendar();doOtherFunctions();">Â&nbsp;20Â&nbsp;</a> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;21Â&nbsp;</p> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;22Â&nbsp;</p> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=23;closeCalendar();doOtherFunctions();">Â&nbsp;23Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=24;closeCalendar();doOtherFunctions();">Â&nbsp;24Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=25;closeCalendar();doOtherFunctions();">Â&nbsp;25Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=26;closeCalendar();doOtherFunctions();">Â&nbsp;26Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=27;closeCalendar();doOtherFunctions();">Â&nbsp;27Â&nbsp;</a> 
     </td> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;28Â&nbsp;</p> 
     </td> 
    </tr> 
    <tr> 
     <td align="right"> 
      <p class="end-of-weekday-style">Â&nbsp;29Â&nbsp;</p> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=30;closeCalendar();doOtherFunctions();">Â&nbsp;30Â&nbsp;</a> 
     </td> 
     <td align="right"><a class="normal-day-style" onmousemove="window.status=&quot; &quot;" onmouseout="window.status=&quot; &quot;" title="" href="javascript:dateSelected=31;closeCalendar();doOtherFunctions();">Â&nbsp;31Â&nbsp;</a> 
     </td> 
    </tr> 
</tbody> 

+1

당신의 질문이기 때문에 그것을 편집 할 수 있어야합니다. 하지만 속도의 이익에 나는 당신의 질문에 위의 HTML을 찔러 그것을 읽을 수 있도록 약간의 형식을 했어. –

+0

시간을내어 주셔서 감사합니다! 어쨌든 오래 머물러야한다는 것을 의미하지 않았던 src에서 빠른 복사 붙여 넣기였습니다. 오염시키지 않았고, 내가 직면 한 DOM 내의 다른 것들 중에서 단 한 종류의 샘플이기 때문입니다. 당신의 대답에 못 박히 셨습니다. 다음번에도 적용될 수 있기를 바랍니다. – Marcos

관련 문제