Найти элемент, у которого нет стиля

В таблице есть такие строки:

<tr id="filtersJob_intrinsicTable_row6" class="evenRow" style="display: none;">some stuff here<tr>
<tr id="filtersJob_intrinsicTable_row7" class="evenRow">some stuff here<tr>

Как использовать watir для получения отображаемых строк, то есть строк, в которых НЕТ style="display: none;?


person stack1    schedule 08.07.2015    source источник


Ответы (2)


У вас есть несколько способов сбора элементов без атрибута style:

Использование локатора :css:

browser.trs(css: 'tr:not([style])')

Использование локатора :xpath:

browser.trs(xpath: '//tr[not(@style)]')

Вы также можете проверить значение атрибута:

browser.trs.select { |tr| tr.attribute_value('style').nil? }

Обратите внимание, что вы должны быть осторожны при использовании атрибута стиля в качестве индикатора отображаемой строки. Кто-то может добавить какое-то другое несвязанное свойство стиля, и тогда все тесты потерпят неудачу. Вместо этого я бы предложил вам искать строки, которые присутствуют:

browser.trs.select(&:present?)

Я думаю, что это также делает назначение кода более очевидным и читабельным.

person Justin Ko    schedule 08.07.2015
comment
Должен ли я просто загрузить таблицу, содержащую вышеуказанные строки, а затем найти, какие trs присутствуют и видны на экране? - person stack1; 08.07.2015
comment
Если вам нужны только строки определенной таблицы, то да, вам следует сначала найти конкретную таблицу. Например, вы можете получить все видимые строки таблицы с идентификатором JobTable, используя browser.table(id: 'JobTable').trs.select(&:present?) - person Justin Ko; 08.07.2015

Использование xpath:

browser.element_by_xpath(".//tr[not(@style)]")

[not(@style)] означает отсутствие атрибута style.

person falsetru    schedule 08.07.2015