ruby - 如何在 ruby​​/watir 中获取元素的类?

标签 ruby watir-webdriver

我有表格标题的代码:

<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/

相关文章:

ruby-on-rails - 将默认参数设置为一些 rspec 请求

ruby - 如何从 Support 文件夹中的 class.rb 调用页面对象

webdriver - Watir Webdriver &lt;script&gt; 元素存在吗?

ruby watir-webdriver 在哈希中使用变量

css - Rails 4 : SASS background image works locally, 在 AWS 中失败

Ruby - Digest::Digest 已弃用;使用摘要

ruby - Net::ReadTimeout on headless Firefox Watir-WebDriver cukes

selenium - 类型错误 : Failed to execute 'createNSResolver' on 'Document' : parameter 1 is not of type 'Node'

javascript - 在 capybara 中,如何让#find等待具有相同类的不同元素出现?

ruby-on-rails - capybara Webkit 引发 InvalidResponseError "Unable to load URL"