Skip to content

Instantly share code, notes, and snippets.

@upinetree
Created January 21, 2014 14:07
Show Gist options
  • Save upinetree/8540721 to your computer and use it in GitHub Desktop.
Save upinetree/8540721 to your computer and use it in GitHub Desktop.
非表示要素はCapybaraのfindで検索対象になるのか

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.

ふむふむ。

でもどっちがデフォルトなのかよくわからん。 ちょっとソースつついてみる。

lib/capybara/query.rb

def visibleありますね。visibleオプション指定がないときは、 Capybara.ignore_hidden_elementsを見て判定しているようです。

こいつはlib/capybara.rbにありました。

[ignore_hidden_elements = Boolean] Whether to ignore hidden elements on the page (Default: true)

ignore_hidden_elementsに従うらしい。 デフォルトはtrueなので、見えないものは探さないってことですね。 Configureで設定可能のようです。

つまり

visible: true #=> display: noneのものは検出しない(デフォルト)
visible: false #=> disiplay: noneでも検出する

ということですね。

実際確かめてみる。

  • visible: trueで検索すると、@resultにdisplay: noneの要素が入らなくて@restに入る。
  • visible: falseで検索すると、@resultに要素が入って@restが空になる。

うん、そのようだ。 スッキリ。

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment