2017-07-28 2 views
0

Ich habe zwei Feldeinstellungen auf meiner Seite. Keiner von ihnen hat eine ID oder Klasse. Nun möchte ich ein bestimmtes Feld im zweiten Feld-Set füllen.Wie finde ich ein Element innerhalb eines Fieldsets ohne Klasse oder ID?

Derzeit ich ein etwas wie dies zu tun, die nicht funktioniert:

within_fieldset('fieldset') do 
    fill_in 'app_answers_attributes_0_answer', with: 'My First Answer' 
end 
click_on 'Submit' 

Und es gibt Fehler:

Capybara::ElementNotFound: Unable to find fieldset "fieldset"

Jede Idee, wie das zu tun?

Antwort

1

within_fieldset nimmt die ID oder Legendentext des fieldset - http://www.rubydoc.info/gems/capybara/Capybara/Session#within_fieldset-instance_method - so ist es nicht wirklich überraschend within_fieldset('fieldset') funktioniert nicht für Sie. Wie Sie tun können, was Sie wollen, hängt davon ab, wie Sie HTML strukturiert haben. Zum Beispiel wenn Sie sind Fieldset haben Legenden

<fieldset> 
    <legend>Something</legened> 
    ... 
</fieldset> 
<fieldset> 
    <legend>Other thing</legened> 
    ... 
</fieldset> 

Sie tun können

within_fieldset('Other thing') do 
    ... 
end 

Wenn Sie keine Legenden, sondern haben Hüllelemente

<div id="first_section"> 
    ... 
    <fieldset>...</fieldset> 
<div> 
<div id="second_section"> 
    <fieldset>...</fieldset> 
</div> 

dann können Sie nur Umfang Verwenden von CSS zum richtigen Feldsatz

within('#second_section fieldset') do 
    ... 
end 

Wenn stattdessen die Fieldset Geschwister sind

<div> 
    <fieldset>...</fieldset> 
    <fieldset>...</fieldset> 
</div> 

dann können Sie nur beschränkte sich auf die zweite Fieldset mit einem CSS-Selektor Geschwister

within("fieldset + fieldset") do 
    ... 
end 
Verwandte Themen