Selenium RC - Сложно с Selenium IDE найти ячейку стола - PullRequest
0 голосов
/ 15 февраля 2010

Я надеюсь, что кто-то здесь может мне помочь. Я использую селен, чтобы проверить страницу с изображением, которое при нажатии отображает календарь. Я могу получить, нажав на изображение, используя

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

Я получил вышеуказанный путь, используя Selenium IDE. Проблема в том, что когда я щелкаю по изображению выше, Selenium IDE не записывает то, что я щелкнул после отображения календаря.

Вот код для кнопки с изображением

<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');" />

К сожалению, я не вижу код календаря после того, как щелкнул по нему. Единственный способ увидеть это - использовать плагин Mozilla «Firebug». Мне удалось получить слой div, календарь которого отображается.

<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>

Если вы посмотрите внимательно, вы увидите ячейки таблицы с датами от 1 до 30. Как я могу получить доступ к этим значениям с помощью Selenium? Я могу использовать IDE, так как он ничего не записывает при всплывающем календаре.

У firebug есть опция для отображения xpath любого тега. Я попробовал это на одном из тегов td, и там написано, что это xpath.

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

Могу ли я использовать вышеуказанный путь, чтобы определить его значение, а затем щелкнуть по нему, используя селен?

Спасибо

1 Ответ

2 голосов
/ 15 февраля 2010

Чтобы щелкнуть по изображению, вы можете использовать click | calendarButton, и это должно загрузить его для вас.

Оттуда вам нужно будет нажимать на предметы, которые я бы затем использовал firebug, чтобы увидеть другие предметы на странице.

Редактировать из дополнительной информации:

Что вам нужно сделать, это использовать xpath=//td[@class="day" and text()="14"] для xpath или для использования css css=td.day:contains('14')

Маршрут css будет намного быстрее в таких браузерах, как Internet Explorer

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...