Tôi đã tìm kiếm xung quanh và tôi không thể tìm thấy cách để thực hiện việc này.Liệt kê các phần tử con cho phần tử Capybara/Poltergeist
Chúng tôi đang chạy thử nghiệm Capybara với trình điều khiển Poltergeist trong các tính năng dưa chuột trên ứng dụng EmberJS/Rails. Tôi không thể sử dụng page.driver.debug vì tôi đang chạy bên trong một trường hợp không có đầu, vì vậy khắc phục sự cố không có sẵn cho tôi, nhưng ảnh chụp màn hình hoạt động và công cụ tìm kiếm Chrome kiểm tra trên trang được đề cập hiển thị các phần tử phù hợp.
Tôi có một kịch bản dưa chuột không thành công và do tìm thấy không hoạt động. Bài kiểm tra của tôi trông giống như sau:
When(/^I delete description "(.*?)"$/) do |description|
within :css, '#myform' do
first('label', :text => /#{description}/).find(:xpath, '..').find(:css, 'button.delete')
end
end
Không thể tìm thấy phần tử được đề cập. Dưới đây là phần có liên quan của 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>
Nếu tôi thêm vào một binding.pry, đây:
first('label', :text => /#{description}/).find(:xpath, '..')
│
mang lại cho tôi câu trả lời này:
=> #<Capybara::Element tag="div">
Và đây:
first('label', :text => /#{description}/).find(:xpath, '..')
│
cho tôi phản hồi này:
=> "Enter your first name"
nhưng đầy đủ find:
first('label', :text => /#{description}/).find(:xpath, '..').find(:css, 'button.delete')
mang lại cho tôi câu trả lời này:
Capybara::ElementNotFound: Unable to find css "button.delete"
Tôi có một cảm giác rằng đây là một vấn đề phụ huynh/anh chị em ruột, nhưng tôi không thể khắc phục sự cố nó. Vì vậy, tôi đoán tôi có một vài câu hỏi:
- Để gỡ lỗi, có anyway với trình điều khiển poltergeist liệt kê tất cả các phần tử con không?
- Có điều gì sai với bộ chọn xpath của tôi không? Thực tế là
..
đang trả vềCapybara::Element tag="div"
khiến tôi nghĩ rằng tôi có phần tử gốc phù hợp (và như tôi đã nói, nó hoạt động trên các trang khác trong các thử nghiệm tương tự khác), nhưng tôi không có cách nào để xác minh phần tử nào. Tôi không thể tìm cách để có được xpath hay bất cứ thứ gì khác giúp tôi xác định phần tử.