2016-05-27 7 views
0

Ich verwende Rspec und Watir-webdriver und suche nach einer Anzahl aller Elemente, die angeklickt wurden.Watir-Webtreiber; Elemente mit wechselnden Klassennamen zählen

Was ich tue:

ich eine Suche durchführen und eine Liste der Ergebnisse zurück; Ich mache dann eine Schleife, um nur 5 von ihnen auszuwählen. Der Klassenname für diese Elemente geht von asset-card selectable bis jetzt asset-card selectable selected.

Ich versuche, eine richtige Zählung zu erhalten, indem dies zu tun:

count = @browser.elements(:class, 'selected').size 

Aber noch gibt mir alle Ergebnisse und nicht speziell diejenigen, die jetzt selected als Teil der Klassennamen haben.

Irgendwelche Gedanken darüber, wie ich das erreichen kann? Diese
ist, was die html wie folgt aussieht:

<div class="search results"> 
    <div class="asset-card selectable selected"></div> 
    <div class="asset-card selectable selected"></div> 
    <div class="asset-card selectable"></div> 
    <div class="asset-card selectable"></div> 
    <div class="asset-card selectable"></div> 
</div> 

In diesem html Beispiel haben die ersten beiden Elemente

+2

Sie sagen, dass '@ browser.elements (: Klasse, 'ausgewählt')' gibt Elemente mit zurück eine Klasse von 'Asset-Karten wählbar'? Wenn Sie den fraglichen HTML-Code bereitstellen können, würde dies bei der Reproduktion Ihres Problems helfen. – orde

+0

@orde, Ich habe meinen ursprünglichen Beitrag aktualisiert, um zu zeigen, was der HTML-Code macht – kmancusi

+2

@kmancusi, sagst du, dass '@ browser.elements (: class, 'selected'). Size 'nicht" 2 "für das Beispiel zurückgibt HTML? –

Antwort

0

ausgewählt Ich fühle mich eher stumm; Ich fand eine Lösung, die das Problem von behebt warum Ich war keine richtige Zählung zurück bekommen: es ist, weil ich nicht lange genug

warte Nachdem ich eine sleep 1 Dauer gestellt, kehrte es eine Zählung genau, was ich klickte auf. Mein Gedanke dazu ist nicht gerade technisch, aber er verhält sich so, als würde die Änderung der Klickaktion und des Klassennamens Aktionen ausführen, bevor eine korrekte Anzahl ermittelt werden konnte.
Ich werde nach einer eleganteren wait Lösung suchen, da ich vermeiden möchte sleep Befehle verwenden, wenn möglich