查找没有样式的元素
Find element which has no style
在一个table中,有这样的行:
<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;
的行?
使用 xpath:
browser.element_by_xpath(".//tr[not(@style)]")
[not(@style)]
表示没有style
属性。
您可以通过多种方式收集不带 style
属性的元素:
使用 :css 定位器:
browser.trs(css: 'tr:not([style])')
使用 :xpath 定位器:
browser.trs(xpath: '//tr[not(@style)]')
您还可以检查属性值:
browser.trs.select { |tr| tr.attribute_value('style').nil? }
请注意,在使用 style 属性作为正在显示的行的指示符时应谨慎。有人可以添加一些其他不相关的样式 属性,然后所有测试都会失败。相反,我建议您查找存在的行:
browser.trs.select(&:present?)
我认为这也使代码的目的更加明显和可读。
在一个table中,有这样的行:
<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;
的行?
使用 xpath:
browser.element_by_xpath(".//tr[not(@style)]")
[not(@style)]
表示没有style
属性。
您可以通过多种方式收集不带 style
属性的元素:
使用 :css 定位器:
browser.trs(css: 'tr:not([style])')
使用 :xpath 定位器:
browser.trs(xpath: '//tr[not(@style)]')
您还可以检查属性值:
browser.trs.select { |tr| tr.attribute_value('style').nil? }
请注意,在使用 style 属性作为正在显示的行的指示符时应谨慎。有人可以添加一些其他不相关的样式 属性,然后所有测试都会失败。相反,我建议您查找存在的行:
browser.trs.select(&:present?)
我认为这也使代码的目的更加明显和可读。