隠れている要素にCapybara経由でアクセスすると”Capybara::ElementNotFound: Unable to find visible xpath”と怒られた

display: none になっている要素をWebDriverで取得しようとすると

Capybara::ElementNotFound: Unable to find visible xpath と怒られた。

Capybara::ElementNotFound: Unable to find visible xpath

まぁ、そうですよね。ということで調べてみると、 Capybara: Unable to find css に回答発見。

処理のはじめに Capybara.ignore_hidden_elements = false を入れるだけで要素にアクセスできるよになった。

これでいいのか感はあるが、JSで無理くり動かすよりはよさそう。

注意点は、 element.text とかにアクセスしたときに、これまで取得できなかった情報までとってくるようになるので、表示される文字列チェックが落ちまくった。

たとえば、あるメッセージの改行を半角空白として取ってきたりする感じ。気をつけてつかわなきゃ。

広告