非表示要素はCapybaraのfindで検索対象になるのか
今日はもう一個書く!
Capybara使ってると、display: none
で非表示にしてあるものはCapybaraのfind対象なのか??
という疑問がでてきたわけです。
ここは公式みてみますか。
Module: Capybara::Node::Finders
visible (Boolean) — Only find elements that are visible on the page. Setting this to false finds invisible andvisible elements.
ふむふむ。
でもどっちがデフォルトなのかよくわからん。 ちょっとソースつついてみる。
def visible
ありますね。visible
オプション指定がないときは、
Capybara.ignore_hidden_elements
を見て判定しているようです。
こいつはlib/capybara.rbにありました。
[ignore_hidden_elements = Boolean] Whether to ignore hidden elements on the page (Default: true)
デフォルトはtrueなので、見えないものは探さないってことですね。 Configureで設定可能のようです。
つまり
visible: true #=> display: noneのものは検出しない(デフォルト) visible: false #=> disiplay: noneでも検出する
ということですね。
実際確かめてみる。
visible: true
で検索すると、@resultにdisplay: none
の要素が入らなくて@restに入る。visible: false
で検索すると、@resultに要素が入って@restが空になる。
うん、そのようだ。 スッキリ。