2010-02-15 7 views
0

J'espère que quelqu'un ici pourra m'aider. Im en utilisant sélénium pour tester une page qui a une image qui lorsque vous cliquez sur affiche un calendrier. Je peux aller aussi loin que cliquer sur l'image en utilisantSelenium RC - Avoir de la difficulté avec Selenium IDE pour trouver une cellule de table

browser.click("//center/table/tbody/tr/td[1]/a/img") 

J'ai obtenu le chemin ci-dessus en utilisant l'IDE Selenium. Le problème est une fois que je clique sur l'image ci-dessus l'IDE Selenium n'enregistre pas ce que j'ai cliqué après que le calendrier est montré.

Voici le code pour le bouton d'image

<INPUT size='8' CLASS="field-date" TYPE="text" NAME="endQtrDate" VALUE="01/10/2004" ID="endQtrDate" onBlur="this.value=validateFieldValue(this.value,'date_error','endQtrDate',this.form)" onFocus="this.select()" TITLE="Enter date in format dd/mm/yyyy" /> 
    <IMG ALIGN="absmiddle" ALT="Press to show calendar picker" NAME="calendarButton" SRC="../images/buttons/small/calendar.gif" onClick="return showCalendar('endQtrDate', 'dd/MM/yyyy');" /> 

Malheureusement je ne peux pas voir le code pour le calendrier après que je clique dessus. Le seul moyen de le voir est d'utiliser le plugin mozilla "Firebug". J'ai réussi à obtenir la couche div dont le calendrier est affiché.

<div class="calendar" 
    style="position: absolute; display: none; left: 234px; top: 416px;"> 
<table cellspacing="0" cellpadding="0"> 
<thead> 
    <tr> 
    <td colspan="1" class="button">-</td> 
    <td colspan="6" class="title" style="cursor: move;">October, 
    2004</td> 
    <td colspan="1" class="button">×</td> 
    </tr> 
    <tr class="headrow"> 
    <td colspan="1" class="button">«</td> 
    <td colspan="1" class="button">‹</td> 
    <td colspan="4" class="button">Today</td> 
    <td colspan="1" class="button">›</td> 
    <td colspan="1" class="button">»</td> 
    </tr> 
    <tr class="daynames"> 
    <td class="name wn">wk</td> 
    <td class="day name">Mon</td> 
    <td class="day name">Tue</td> 
    <td class="day name">Wed</td> 
    <td class="day name">Thu</td> 
    <td class="day name">Fri</td> 
    <td class="name day weekend">Sat</td> 
    <td class="name day weekend">Sun</td> 
    </tr> 
</thead> 
<tbody> 
    <tr class="daysrow"> 
    <td class="day wn">40</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">1</td> 
    <td class="day weekend">2</td> 
    <td class="day weekend">3</td> 
    </tr> 
    <tr class="daysrow"> 
    <td class="day wn">41</td> 
    <td class="day">4</td> 
    <td class="day">5</td> 
    <td class="day">6</td> 
    <td class="day">7</td> 
    <td class="day">8</td> 
    <td class="day weekend">9</td> 
    <td class="day weekend">10</td> 
    </tr> 
    <tr class="daysrow"> 
    <td class="day wn">42</td> 
    <td class="day">11</td> 
    <td class="day">12</td> 
    <td class="day">13</td> 
    <td class="day">14</td>  
    <td class="selected day">15</td> 
    <td class="day weekend">16</td> 
    <td class="day weekend">17</td> 
    </tr> 
    <tr class="daysrow"> 
    <td class="day wn">43</td> 
    <td class="day">18</td> 
    <td class="day">19</td> 
    <td class="day">20</td> 
    <td class="day">21</td> 
    <td class="day">22</td> 
    <td class="day weekend">23</td> 
    <td class="day weekend">24</td> 
    </tr> 
    <tr class="daysrow"> 
    <td class="day wn">44</td> 
    <td class="day">25</td> 
    <td class="day">26</td> 
    <td class="day">27</td> 
    <td class="day">28</td> 
    <td class="day">29</td> 
    <td class="day weekend">30</td> 
    <td class="day weekend">31</td> 
    </tr> 
    <tr class="emptyrow"> 
    <td class="day wn">36</td> 
    <td class="day">30</td> 
    <td class="day">31</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    <td class="day">&nbsp;</td> 
    </tr> 
</tbody> 
<tfoot> 
    <tr class="footrow"> 
    <td colspan="8" class="ttip" style="cursor: move;">Select date</td> 
    </tr> 
</tfoot> 
</table> 
<div class="combo" style="display: none;"> 
<div class="label">Jan</div> 
<div class="label">Feb</div> 
<div class="label">Mar</div> 
<div class="label">Apr</div> 
<div class="label">May</div> 
<div class="label">Jun</div> 
<div class="label">Jul</div> 
<div class="label">Aug</div> 
<div class="label">Sep</div> 
<div class="label">Oct</div> 
<div class="label">Nov</div> 
<div class="label">Dec</div> 
</div> 
<div class="combo" style="display: none;"> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
<div class="label"></div> 
</div> 
</div> 

Si vous regardez attentivement, vous verrez des cellules de tableau pour les dates de 1 à 30. Comment puis-je accéder à ces valeurs en utilisant Selenium? Je peux utiliser l'IDE car il n'enregistre rien quand le calendrier apparaît.

Le firebug a une option pour afficher le xpath de n'importe quelle étiquette. Je l'ai essayé sur l'un des tags td et il dit que c'est le xpath.

/html/body/div/table/thead/tr[2]/td[3]

Puis-je utiliser le chemin ci-dessus pour déterminer sa valeur puis cliquez sur l'aide de sélénium?

Merci

Répondre

2

cliquer sur l'image que vous pouvez utiliser click | calendarButton et qui devrait le charger pour vous. À partir de là, vous devrez cliquer sur les éléments que j'utiliserai ensuite avec firebug pour voir les autres éléments de la page.

Modifier à partir d 'info:

Ce que vous devez faire est alors utiliser xpath=//td[@class="day" and text()="14"] pour XPath ou pour css utilisation css=td.day:contains('14')

La route css sera beaucoup plus rapide dans les navigateurs comme Internet Explorer

+0

Je ne savais pas qu'un cssLocator pouvait faire un 'contains' comme XPath. Merci pour l'information. – djangofan