2017-04-13 6 views
3

Für was scheint eine einfache Frage zu sein Ich habe das für eine dummere lange Zeit und kann anscheinend nichts auf Google finden. Ich habe auf diese Schaltfläche, ich klicken müssen, die keine ID hat aber eine KlasseCapybara - Klicken Element nach Klassenname

enthält
<button class="filter-case-studies" onclick="initBootpag(filterForContentType('CASE STUDIES', searchHits))" type="button"> 
<b>CASE STUDIES</b> 
(2) 
</button> 

Ich habe versucht, mit click_on was ich jetzt weiß, nur für Links und Tasten so natürlich nicht funktionieren. Das ist, was ich habe, so weit:

When(/^I filter the results to only see case studies$/) do 
    click_on('filter-case-studies') 
end 

ich auch page.find('filter-case-studies').click habe versucht, dies ist auch nicht funktionieren.

page.find(:class, 'filter-case-studies').click defualts zu: css so das ist auch für mich gescheitert.

Gibt es keine Möglichkeit, ein Element durch den Klassennamen in Capybara klicken?

Vielen Dank im Voraus für die Hilfe.

Antwort

-1

Vielen Dank an Herrn Schütt für die Idee der Lage zu tun . zu verwenden Selektoren.

Ich musste am Ende page.find(:class, '.filter-case-studies').click verwenden. Die absolute Navbar hat den Button in den Weg gebracht, also musste ich page.execute_script "window.scrollBy(0,500)" mit einschließen, um den Test abzuschließen.

+0

': class' ist kein von Capybara angebotener Selektor, so dass das von Ihnen angezeigte Beispiel nicht funktioniert, wenn Sie keinen benutzerdefinierten Selektortyp registriert haben. –

+0

Eigentlich abhängig von der Version von Capybara, die Sie verwenden, kann es entweder ignorieren Sie einfach den ': class' Parameter und Standard: CSS, oder es wird eine Warnung über einen 'Unbekannten Selektor-Typ' und dann standardmäßig auf: css. Abhängig von der Seite kann das Erhöhen der Seitengröße die Notwendigkeit zum Scrollen der Seite beseitigen. –

0

click_on('.filter-case-studies')

Sie müssen die . Wähler für Klassen und # für ids.

+0

Ah ich sehe, was sie bedeuten: css Selektoren jetzt. Das scheint fast zu funktionieren, aber jetzt bekomme ich einen Fehler, der besagt, dass das Element an Punkt nicht anklickbar ist (914.2666625976562, 16.133331298828125). Anderes Element würde den Klick erhalten:

(Selenium :: WebDriver :: Error :: UnknownError) 'Da die navbar absolut ist, muss es in der Art sein, – King

+1

' click_on' nimmt keinen CSS Selektor, es nimmt die ID, Enthaltener Text, alt, Titel, usw. - so sollte dieses Beispiel nicht funktionieren –

+0

Es stimmt, ich musste 'page.find (: class, 'filter-case-studies') verwenden, klicken Sie darauf, damit es funktioniert. Ich werde eine passende Lösung posten – King

6

Der üblicher Weg dies in Capybara tun ist

find('button.filter-case-studies').click 

In relativ neueren Versionen von Capybara Sie sollten auch

click_on(class: 'filter-case-studies') 
Verwandte Themen