На веб-сайте, который я тестирую, есть куча выбранных фильтров (picture for context). Я пробегаем по всем из них, и закрывая их так:Capybara/Cucumber In Ruby: прекратите поиск, когда не существует больше элементов
When /^each (.+) is clicked$/ do |element|
page.all("#{element}").each do |element|
element.click
end
end
Этот код нажимает на кнопку закрытия и закрывает все открытые фильтры. Проблема у меня в том, что, когда я добираюсь до конца фильтров, он продолжает искать и поднимает эту ошибку:
stale element reference: element is not attached to the page document
(Session info: chrome=49.0.2623.87)
(Driver info: chromedriver=2.20.353124 (035346203162d32c80f1dce587c8154a1efa0c3b),platform=Mac OS X 10.10.5 x86_64) (Selenium::WebDriver::Error::StaleElementReferenceError)
./features/step_definitions/ux_steps.rb:22:in `block (2 levels) in <top (required)>'
./features/step_definitions/ux_steps.rb:21:in `/^each (.+) is clicked$/'
features/ux.feature:16:in `When each span is clicked'
HTML:
<div class="sort-block order" id="selectedFilters">
<a id="Anti-Inflammatory_selectedfilter" href="javascript:void(0)" class="current">Anti-Inflammatory<span class="selectedFilterCross" onclick="selectedFilterFun('selectedFilterText1','Anti-Inflammatory',-1); $(this).parent('a').remove();">X</span></a>
<a id="Cardiac_selectedfilter" href="javascript:void(0)" class="current">Cardiac<span class="selectedFilterCross" onclick="selectedFilterFun('selectedFilterText1','Cardiac',-1); $(this).parent('a').remove();">X</span></a>
<a id="Diabetic_selectedfilter" href="javascript:void(0)" class="current">Diabetic<span class="selectedFilterCross" onclick="selectedFilterFun('selectedFilterText1','Diabetic',-1); $(this).parent('a').remove();">X</span></a>
</div>
Любые идеи о том, как остановить поиск как только список элементов пуст? Вся помощь приветствуется!
Это устраняет ошибку, но теперь она застревает в бесконечном цикле. – user5854440
Ой, опечатка. Исправлена. –
Он все еще застрял в бесконечном цикле. Он закрывает все фильтры, но затем продолжает искать больше. Я добавил html к моему вопросу ради ясности. – user5854440