2017-01-13 12 views
-1

私はCapybaraを使ってJupyter Notebookセルにテキストを入力したいと考えています。要素をクリックせずに 'send_keys'を使用すると、カーソルは正しい位置に移動しますが、正しく機能しません。find(".input").click.send_keys("hello")Capybara、Selenium、Jupyter Notebook:コードセルを埋めよう

要素を選択せず​​にキーをシミュレートする方法はありますか? find("body").send_keys("hello")もテキストを生成しません

編集:Jupyter NotebookがCodeMirrorを使用していることがわかりました。 CodeMirrorは隠された<textarea>フィールドを何らかの形で使用しているため、Seleniumが入力を拒否した理由を説明します。

私の現在の回避策は、最初のCodeMirrorエディタを見つけ、それにsetValue機能を使用することです:execute_script("var editor = $('.CodeMirror')[0].CodeMirror; editor.setValue('this is the input')")

+0

キーイベントを送信する必要がありますいくつかの要素(その要素は、必要ならbody要素になる可能性があります)。あなたは入力する前に要素をクリックしなければなりませんか?関連するHTMLを表示できますか? –

答えて

0

私はセレンのアクションビルダーを使用して回避策を回避しました。目的の要素を検索し、そのネイティブセレン表現を取得:

el_native = first('.input').native

次に、要素にクリックして、キーを送信するために、アクションビルダーを使用します。

page.driver.browser.action.click(el_native).send_keys("hello").perform

関連する問題