1
私がテストしているウェブサイトには、選択したフィルタがたくさんあります(picture for context)。RubyでCapybara/Cucumber:要素がなくなると検索を停止します
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