【问题标题】:Get all classes of an element in capybara?获取水豚中元素的所有类?
【发布时间】:2018-10-08 17:13:13
【问题描述】:

使用 capybara,有没有办法获取一个元素的所有 css 类?查看文档,我看不到任何简单的方法。

另外,给定一个元素 elem 和一个 css 类 someclass,elem.has_css?('.someclass') 是否应该等同于 jquery $(elem).hasClass('someclass')

这个特殊的测试使用 Selenium,因为它涉及到 javascript。

【问题讨论】:

    标签: ruby capybara


    【解决方案1】:

    Element#[] 对我来说看起来很简单:

    find('div')[:class]
    

    另外,给定一个元素 elem 和一个 css 类 someclass,elem.has_css?('.someclass') 是否应该等同于 jquery $(elem).hasClass('someclass')?

    Element#has_css? 在调用该方法的元素中检查具有指定 CSS 选择器的元素。 Jquery 的hasClass 检查元素是否具有指定的类。

    更新: Capybara matchers 在当前元素中查找元素/文本。 Element#has_css? 检查元素是否包含具有指定 css 选择器的元素。如果要检查元素是否存在,请使用page.has_css?。也许expect(page).to have_css('div') 形式的匹配器更适合您。

    【讨论】:

    • 这适用于获取课程。我有一种情况,elem[:class] 返回“otherclass someclass”,但 elem.has_css?('.someclass') 返回 false。这有意义吗?
    • 您能否指出 README 中说“Element#has_css 检查 Element 是否包含带有指定 css 选择器的元素”的地方?另外,如果 has_css?表现得像你说的那样,那么我认为我的问题中的 jquery 代码和 ruby​​ 代码的结果不一定相同。
    • 实际上我不使用也不知道jquery,但我使用了很多capybara。阅读rdoc on has_css。我已经更新了答案
    猜你喜欢
    • 2019-02-20
    • 2013-09-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多