5

我有表格标题的代码:

<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这个类的所有问题?

4

2 回答 2

10

Zeljko 解决了您关于计算与某些模式匹配的标签数量的问题。

关于获得某物的类别,这取决于您所指的“类别”的风格。

红宝石类

Ruby 是一种面向对象的语言,对象由语言中的“类”关键字定义。Watir 利用了这一点,并有一个与 HTML 对象平行的内部对象模型。在 Ruby 中, .class 方法返回对象的类,这是硬连线到语言中的。(实际上,您不会在watir rDocs.class中的任何地方看到描述的方法)这是您在尝试应该看起来像这样的代码时所做的

b.th(:id => "categories_convertToSale").class

=> Watir::TableHeaderCell

它告诉您该.th方法返回的对象类是 watir 'TableHeaderCell' (有关更多信息,请参阅 watir rdoc for the TableHeaderCell Object 和/或.th 方法

HTML 类属性

'class' 的另一种风格是 HTML 类属性,它是 HTML 中几乎所有元素类型的标准属性。为此,您需要使用 watir 的.attribute_value方法以及要检查的属性,以获取元素的属性值,或 watir 中的任何对象,例如与 HTML 元素类型平行的 TableHeaderCell。

b.th(:id => "categories_totalCost").attribute_value("class")
于 2013-04-16T21:45:03.550 回答
6

这应该这样做:

browser.ths(:class => "disabledHeader").size
于 2013-04-16T18:12:10.440 回答