Szukałem i nie mogę znaleźć sposobu, aby to zrobić.Wyświetlenie elementów potomnych dla elementu Capybara/Poltergeist
Prowadzimy testy Capybara ze sterownikiem Poltergeist w funkcjach ogórka w aplikacji EmberJS/Rails. Nie mogę używać strony page.driver.debug, ponieważ korzystam z instancji bez nagłówka Vagrant, więc rozwiązywanie problemów nie jest dla mnie dostępne, ale zrzuty ekranu działają, a narzędzia sprawdzające Chrome na danej stronie pokazują właściwe elementy.
Mam scenariusz z ogórkiem, który zawodzi, a dzieje się tak dlatego, że znalezisko nie działa. Mój test wygląda następująco:
When(/^I delete description "(.*?)"$/) do |description|
within :css, '#myform' do
first('label', :text => /#{description}/).find(:xpath, '..').find(:css, 'button.delete')
end
end
Nie można znaleźć danego elementu. Oto odnośny fragment DOM:
<form id="myform">
<div class="row-fluid question">
<div class="span12">
<div class="padding">
<div id="ember576" class="ember-view is-viewing-edit-controls">
<button class="delete" data-ember-action="31"></button>
<button class="edit" data-ember-action="32"></button>
<button class="insert_above" data-ember-action="33"></button>
<button class="insert_below" data-ember-action="34"></button>
<button class="move_up" data-ember-action="35"></button>
<button class="move_down" data-ember-action="36"></button>
<label class="question" data-ember-action="37">Enter your first name</label>
<input id="ember577" class="ember-view ember-text-field">
<span class="error"></span>
</div>
</div>
</div>
</div>
</form>
Jeśli dodać w binding.pry, to:
first('label', :text => /#{description}/).find(:xpath, '..')
│
daje mi tej odpowiedzi:
=> #<Capybara::Element tag="div">
a to:
first('label', :text => /#{description}/).find(:xpath, '..')
│
daje mi tę odpowiedź:
=> "Enter your first name"
ale pełny znalezisko:
first('label', :text => /#{description}/).find(:xpath, '..').find(:css, 'button.delete')
daje mi tej odpowiedzi:
Capybara::ElementNotFound: Unable to find css "button.delete"
Mam wrażenie, że jest to kwestia rodzice/rodzeństwo, ale nie mogę rozwiązać to. Tak myślę, że mam kilka pytań:
- Do debugowania, czy istnieje mimo to sterownik poltergeist do listy wszystkich elementów podrzędnych?
- Czy jest coś nie tak z moim selektorem xpath? Fakt, że
..
powracaCapybara::Element tag="div"
powoduje, że myślę, że mam właściwy element nadrzędny (i jak powiedziałem, działa na innych stronach w innych podobnych testach), ale nie mam możliwości zweryfikowania, który to element. Nie mogę znaleźć, jak uzyskać xpath lub cokolwiek innego, co pomaga mi zidentyfikować element.