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

时间:2017-11-02 11:16:25

标签: ruby selenium capybara site-prism

在红宝石中使用Capybara并使用Site Prism创建页面对象。 Http元素看起来像这样:

fn3()

我已为此部分创建了课程:

#carousel-right {
  position: relative;
}

#carousel-right > .fa {
  position: absolute;
  top: 50%;
  left: 50%;
  transform: translate(-50%, -50%)
}

然后将部分添加到页面对象:

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

此元素可以折叠,只有指示它的状态(如果它是否已折叠)是它的类名,它是从

更改的
class ServicesSection < SitePrism::Section
end

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

如何找出此元素是否已折叠(已关闭)?

2 个答案:

答案 0 :(得分:2)

Inside ServiceSection我定义了方法:

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

如果&#39;已关闭&#39;则返回true。是课堂的一部分。

答案 1 :(得分:2)

root_element[:class].include? 'is-closed'的自我回答可能对你的情况很好,但是不健全,因为它也会匹配一个is-closed-tomorrow类的元素。更强大的解决方案如下:

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