2017-11-02 2 views
0

Verwenden von Capybara in Ruby und Erstellen von Seitenobjekten mit Site Prism. Http Element sieht wie folgt aus:Überprüfen Sie, ob der Abschnitt in Site Prism eine Klasse mit einem bestimmten Typ hat

class ServicesSection < SitePrism::Section 
end 

und dann hinzugefügt Abschnitt auf der Seite Objekt:

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

Dieses Element kann zusammengeklappt werden

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

I Klasse für diesen Abschnitt erstellt haben und nur eine Sache, die den Status anzeigt (wenn es kollabiert ist oder nicht), ist der Klassenname, der von

01 geändert wird
<section class='service-widget' id='service_id> 

zu

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

Wie, um herauszufinden, dass dieses Element kollabiert ist (geschlossen) oder nicht?

Antwort

1

Ihre Antwort von root_element[:class].include? 'is-closed' wird wahrscheinlich gut für Ihren Fall funktionieren, aber ist nicht robust, da es auch ein Element mit einer Klasse von übereinstimmen würde. Eine robustere Lösung wäre folgende:

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

Sie können CSS-Selektor verwenden, um dieses Element zu finden: so etwas wie ".service-widget.is-closed". Wenn dieses Element existiert, ist das Element geschlossen.

+0

Ich habe dies versucht, aber mit '.is-closed' Element ist nicht in der Lage zu finden. –

+0

@JakubSmolar, ich habe meine Antwort bearbeitet. Versuchen Sie es erneut. –

+0

Das hat nicht so gut funktioniert. Aber ich denke ich weiß wo das Problem ist (aber ich kenne den Lösungsjet nicht). CSS-Klasse is-closed ist Teil des Abschnitts-Tags. Wenn ich dieses Element in der Instanz von ServicesSection finde, hat Site Prism nicht innerhalb des Stammelements, sondern in allen untergeordneten Elementen gesucht. Aber ich weiß es nicht genau. –

0

Innerhalb ServiceSection I definierte Methode:

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

Dies liefert true, wenn 'geschlossen ist' Teil der Klasse ist.

Verwandte Themen