2017-06-08 20 views
3

私のアプリでTrix WYSIWYG editorを使用しています。私のカピバラのテストのために:私はエディタに記入したい。Capybaraエラー:Selenium :: WebDriver :: Error :: ElementNotVisibleError:要素が表示されない

私は記事を見つけました:How to test basecamp's trip editor...これは有望と思われました。残念ながら、それは私に、このエラーを与え続け:

Selenium::WebDriver::Error::ElementNotVisibleError: element not visible

だから、カピバラはOK要素を見つけることですが、カピバラは隠し/不可視エレメントと相互作用しないために、いくつかのデフォルト設定を持っている必要がありますので、それはちょうどそれと相互作用していないことが表示されます。

周りを見回した後、私はこのStackoverflow質問に来ました:Is it possible to interact with hidden elements with capybara。そのポストから

:私はカピバラはエディタを埋めるために得ることができる方法についての

def fill_in_trix_editor(id, value) 
    find(:xpath, "//*[@id='#{id}']", visible: false).set(value) 
end 

任意のアイデア:

def fill_in_trix_editor(id, value) 
    Capybara.ignore_hidden_elements = false 
    find(:xpath, "//*[@id='#{id}']").set(value) 
    Capybara.ignore_hidden_elements = true 
end 

だけでなく、この:私はすでにこれを試してみましたか?何が価値がある場合:私はrails 5.1.1chromedriver=2.29.461585を使用しています

+0

のために働くであろう見えるのcontentEditable要素にsetを呼び出すん隠された要素?あなたの仕様テストは何ですか?つまり、その要素を可視にするために必要なコードを実行する必要があります。つまり、ユーザーが表示させるために何をしていてもかまいません。 – DiegoSalazar

+0

@DiegoSalazar質問を更新しました。最終的に私はカピバラで編集者を記入する方法を理解しようとしています。私が辿りつく道は、編集者を直接記入することができないかのように見えたので、唯一の選択肢は、カピバラに隠し要素を記入させることでした。トーマスの答えを働かせるために、私はトマスの答えを取り除いています。 – Neil

答えて

3

短い答え:あなたはセレン

長い答えを使用してすることはできません:そのエラーがセレンが存在することになるので、非可視要素との相互作用からあなたを妨げていますユーザーが目に見えない要素をクリックしたりキーを送信したりすることはできません。

実際に隠し要素の値を変更したい場合は、execute_script経由でJSを使用する唯一の方法ですが、trixが予期/使用しているイベントは生成されない可能性が最も高いです。はるかに優れた解決方法は、ユーザーがどのような目に見える要素を使って直接対話して対話するかを把握することです。セレンとカピバラはサポート(カスタム要素と一緒に)使用しているように思われるものトリックスであるので

find(:css, 'trix-editor').set("New text") 

のようなものは、おそらくどのようにユーザーが対話することができます

+0

感謝します。 – Neil

関連する問題