Доступ к элементу таблицы TH с помощью WATIR - PullRequest
2 голосов
/ 05 мая 2011

Мне нужно проверить, отображается ли определенный столбец в таблице. Каждый столбец имеет заголовок TH с уникальным идентификатором. Как лучше всего проверить наличие элемента TH в таблице?

Вот пример кода таблицы.

<table id="attr-table">
  <thead>
    <tr>
      <th id="attr-action-col"><input type="checkbox" value="" class="attr-action-box" id="attr-action-col_box"></th>
      <th id="attr-name-col">Name<span class="ui-icon ui-icon-triangle-1-n"></span></th>
      <th id="attr-type-col"></th>
      <th id="attr-scope-col"></th>
      <th id="attr-value-col">English Value</th>
      <th id="attr-master-col">Master Value</th>
      <th id="attr-translation-col">T</th>
      <th id="attr-workflow-col">Status</th>
      <th id="attr-history-col">H</th>
    </tr>
  </thead>
<tbody>
....
</tbody></table>

ТИА

Ответы [ 2 ]

2 голосов
/ 06 мая 2011

Попробуйте th, он должен работать в watir-webdriver, если он не работает в других гемах Watir:

browser.th(:id, 'attr-translation-col').exists?
1 голос
/ 06 мая 2011

вообще. Существует? Метод - ваш лучший выбор, чтобы увидеть, существует ли данный элемент. он возвращает истину или ложь ..

browser.cell (: id, 'attr-translation-col'). Существует?

= - = - = - = Изменить, чтобы отразить материал, изученный с помощью комментариев и некоторого результирующего исследования = - = - = - =

метод .cell реализован совершенно по-разному в Watir против Watir-Webdriver. Похоже, это не включено в документ о различиях между ними.

В Watir метод .cell определен в модуле Watir :: Container и возвращает объект tablecell . Это делает метод .cell доступным практически везде, где угодно, что унаследовано от Контейнер или включает его. Например, объект IE . Объект tablecell наследуется от класса Element и, таким образом, имеет доступ к большинству ожидаемых методов, таких как .exists?

В Watir-Webdriver метод .cell определен в Watir :: CellContainer . Этот модуль включен в Watir :: TableRow , что означает, что (если я правильно понимаю) метод .cell доступен только из объекта TableRow или чего-то, что включает TableRow или наследуется от него. Например, если вы просматриваете объект Watir-Webdriver Browser , вы не увидите в списке метод .cell . Как и Watir, объект tablecell наследуется от класса Element , и также должен иметь доступ к методу .exists? .

В отличие от .cell , методы Watir-Webdriver для .tr, .td, .th все определены в Watir :: Container ( в отличие от CellContainer) и, таким образом, являются высокодоступными и обычно работают.

Итак, что говорит мне этот анализ Rdoc для двух проектов, так это то, что если вы действительно можете получить в руки объект tablecell в Watir-webdriver, вы сможете вызывать .exists? метод, однако вы можете найти количество мест, которые вы можете использовать .cell, чтобы получить очень ограниченную табличную ячейку, так как немногие объекты поддерживают этот метод. Если вы видите ошибку о несуществующем методе, это может быть метод .cell, а НЕ .exists? метод (в отношении Watir-Webdriver)

...