检查 Site Prism 中的部分是否有 class 特定类型

Check if section in Site Prism has class of specific type

在 ruby 中使用 Capybara 并使用 Site Prism 创建页面对象。 Http 元素如下所示:

<section class='service-widget'  id='service_id>
   <div class='title'> ... </div>
   <div class='content> ... </div>
</section>

我为这个部分创建了 class:

class ServicesSection < SitePrism::Section
end

然后向页面对象添加部分:

class ServicesPage < SitePrism::Page
    sections :services, ServicesSection, 'section[id^="service_"]'
end

此元素可以折叠,唯一指示其状态(是否折叠)的是它的 class 名称,它是从

更改而来的
<section class='service-widget'  id='service_id>

<section class='service-widget is-closed'  id='service_id>

如何判断这个元素是否折叠(关闭)?

在 ServiceSection 中我定义了方法:

def closed?
   root_element[:class].include? 'is-closed'
end

如果 'is-closed' 是 class 的一部分,则此 returns 为真。

您的自我回答 root_element[:class].include? 'is-closed' 可能会很好地满足您的情况,但不够稳健,因为它还会匹配 class 为 is-closed-tomorrow 的元素。更强大的解决方案如下:

root_element.matches_css?('.is-closed', wait: false)