【问题标题】:Check if element has two classes检查元素是否有两个类
【发布时间】:2012-07-29 12:46:34
【问题描述】:

我有 2 个可能的 div。

<div class='a b'></div>

<div class='c d'></div>

有没有办法检查 div 元素是否有 2 个类 a 和 b?

我使用 Ruby、Capybara 和 XPath 来选择元素,但 css 可以解决问题。

【问题讨论】:

    标签: ruby xpath capybara


    【解决方案1】:

    这个 css 选择器应该可以在 capybara 中工作:

    page.has_css?('div.a.b')
    

    哪个会匹配

    &lt;div class="a b"&gt; 但不是&lt;div class="a"&gt;

    【讨论】:

    【解决方案2】:

    你可以这样做:

    page.should have_css('div.a.b')
    

    如果你不使用 rspec,就是这样:

    page.has_css?('div.a.b')
    

    【讨论】:

    • 这需要Rspec,不是吗?
    • 是的。如果你不想要 RSpec,你可以使用page.has_css?('div.a.b')
    【解决方案3】:

    XPath 解决方案

    使用

    div[contains(concat(' ', @class, ' '), ' a ')
      and
        contains(concat(' ', @class, ' '), ' b ')
       ]
    

    这会选择上下文节点的任何div 子节点,其class 属性包含"a""b" 类。

    如果要求任何选定的divclass 属性只包含(仅)这两个类而不包含其他类,请使用

    div[contains(concat(' ', @class, ' '), ' a ')
      and
        contains(concat(' ', @class, ' '), ' b ')
      and
        string-length(normalize-space(@class)) = 3
       ]
    

    【讨论】:

      猜你喜欢
      • 2017-11-26
      • 1970-01-01
      • 2018-12-13
      • 1970-01-01
      • 2016-06-07
      • 1970-01-01
      • 2020-02-21
      • 2011-04-08
      • 1970-01-01
      相关资源
      最近更新 更多