我有表格标题的代码:
<thead>
<tr class="ui-jqgrid-labels ui-sortable" role="rowheader" style="">
<th id="categories_formName" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr" style="width: 250px;">
<div id="jqgh_categories_formName" class="ui-jqgrid-sortable">Category Name</div>
</th>
<th id="categories_totalClicks" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr" style="width: 99px;">
<div id="jqgh_categories_totalClicks" class="ui-jqgrid-sortable">Clicks</div>
</th>
<th id="categories_avgCpc" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr" style="width: 99px;">
<div id="jqgh_categories_avgCpc" class="ui-jqgrid-sortable">Avg CPC($)</div>
</th>
<th id="categories_totalCost" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr" style="width: 99px;">
<div id="jqgh_categories_totalCost" class="ui-jqgrid-sortable">Total Cost($)</div>
</th>
<th id="categories_convertToSale" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr disabledHeader" style="width: 99px;">
<div id="jqgh_categories_convertToSale" class="ui-jqgrid-sortable">CTS(%)</div>
</th>
<th id="categories_totalOrders" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr disabledHeader" style="width: 99px;">
<div id="jqgh_categories_totalOrders" class="ui-jqgrid-sortable">Total Orders</div>
</th>
<th id="categories_totalSales" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr disabledHeader" style="width: 99px;">
<div id="jqgh_categories_totalSales" class="ui-jqgrid-sortable">Sales($)</div>
</th>
<th id="categories_costOfSale" role="columnheader" class="ui-state-default ui-th-column ui-th-ltr disabledHeader" style="width: 96px;">
<div id="jqgh_categories_costOfSale" class="ui-jqgrid-sortable">COS(%)</div>
</th>
</tr>
并且需要找出有多少标签具有类“disabledHeader”或至少获取特定的类(由 id 寻址)。
当我这样做时:
cl = b.th(:xpath, '//th[@id="categories_convertToSale"]')
cl.exist?
=> true
cl.inspect
=> "#<Watir::TableHeaderCell:0x..f9b976cc1015b866a located=true selector={:xpath=>\"//th[@id=\\\"categories_convertToSale\\\"]\", :tag_name=>\"th\"}>"
cl.class
=> Watir::TableHeaderCell
cl[@class]
或 cl(:class)
返回错误。
b.element(:class, "disabledHeader").size
返回方法缺失错误。
如何解决这个类的所有th-s
?
最佳答案
Zeljko 解决了您关于计算与某种模式匹配的标签数量的问题。
关于获取某物的类别,这取决于您指的是哪种风格的“类别”。
Ruby 类
Ruby 是一种面向对象的语言,对象由语言中的“class”关键字定义。 Watir 利用了这一点,并拥有一个类似于 HTML 对象的内部对象模型。在 Ruby 中,.class 方法返回一个对象的类,这是硬连接到语言中的。 (事实上 ,您不会在 watir rDocs 的任何地方看到描述的 .class
方法)这就是您在尝试应该看起来像这样的代码时所做的
b.th(:id => "categories_convertToSale").class
=> Watir::TableHeaderCell
它告诉您 .th
方法返回的对象类是一个 watir 'TableHeaderCell'(有关详细信息,请参阅 TableHeaderCell Object 和/或 .th method 的 watir rdoc)
HTML 类属性
“类”的另一种风格是 HTML 类属性,它是 HTML 中几乎所有元素类型的标准属性。为此,您需要使用 watir 的 .attribute_value
方法以及您要检查的属性,以获取元素或 watir 中任何对象的属性值,例如与 HTML 元素类型相似的 TableHeaderCell。
b.th(:id => "categories_totalCost").attribute_value("class")
关于ruby - 如何在 ruby/watir 中获取元素的类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16043788/