2017-11-02 4 views
0

ルビーでカピバラを使用し、サイトプリズムでページオブジェクトを作成しています。 のHttp要素は次のようになります。私は、このセクションのためのクラスを作成しているサイトプリズムのセクションに特定の種類のクラスがあるかチェックしてください

<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 

この要素は折りたたむことができますその状態を示すもの(折りたたまれているかどうか)は、

から 01に変更されたクラス名です

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

から

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

はどのようにこの要素が崩壊(閉じた状態)、またはされていないことを見つけるには?

答えて

1

自己回答root_element[:class].include? 'is-closed'はおそらくあなたのケースでうまくいくが、クラスがis-closed-tomorrowの要素と一致するため、堅牢ではない。より堅牢なソリューションは次のようになります:

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

あなたは、この要素を見つけるためのCSSセレクタを使用することができます。この「.service-widget.isクローズ」のようなものを。この要素が存在する場合、要素は閉じられます。

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

これは、「クローズドは」クラスの一部である場合はtrueを返します。

+0

私はこれを試しましたが、 '.is-closed'要素は見つかりませんでした。 –

+0

@JakubSmolar、私は私の答えを編集しました。もう一度やり直してください。 –

+0

それもうまくいきませんでした。しかし、私はどこに問題があるのか​​分かっていると思うが(私は解決策のジェットが分からない)。 Cssクラスis-closedはセクションタグの一部であり、ServicesSectionのインスタンスでこの要素を見つけると、Site Prismはルート要素内を調べず、すべての子要素を調べます。しかし私は確かに分かりません。 –

0

インサイドServiceSectionは、私は方法を定義しました。

関連する問題