「send_keys」を実行することで要素にキーボード入力することが出来ます。
element.send_keys(:xxx)の形でxxxに特殊キー指定すると、要素に対して特殊キーを入力することができます。また、element.send_keys(:xxx,string)の形で指定された場合は、特殊キーであるxxxが押下された状態で、要素に対して文字(文字列)入力することができます。
一方、element.send_keys(string,:xxx)は要素に対して通常キー入力した後、特殊キー入力しています。具体例としては「検索テキストボックスに文字列入力後にEnterキー入力」などがあげられます。
説明
◆メソッド ・send_keys(:xxx) ◆使用形態 ・element.send_keys(:xxx,string) や element.send_keys(:xxx)や element.send_keys(string,:xxx)など ※xxxはAltやShiftなどの特殊キーを意味する ◆備考 ・テキストボックスやテキストエリアなどのHTML要素に対して、文字列入力やBackSpaceまたは Ctrlなどの特殊キーを使用する為のメソッド ◆関連項目 ・要素に入力された値をクリアする ・要素をクリックする
サンプル
require 'selenium-webdriver' # Firefoxを起動 driver = Selenium::WebDriver.for(:firefox) #指定したURLに遷移する driver.get('https://www.google.co.jp') #検索テキストボックスの要素をname属性名から取得 element = driver.find_element(:name, 'q') #検索テキストボックスでシフトボタンを押下しながら'selenium'を入力 element.send_keys(:shift, 'selenium') #カーソルを1文字分左にずらす element.send_keys(:arrow_left) #BackSpaceを1回押下し1文字分消去 element.send_keys(:backspace) #Enterキーを押下する element.send_keys(:enter)
※selenium version 4.1.0で動作確認をしています(ブラウザのUIや属性値などが変更された場合、実行結果が異なる可能性があります)
実行結果
特殊キー一覧
・Enterキー :element.send_keys(:enter) ・ALTキー(通常キーと組み合わせ) :element.send_keys(:alt,'f') →上記はALT+'f'キー押下時。第2引数に通常キーを指定 ・←キー :element.send_keys(:left) ・→キー :element.send_keys(:right) ・↑キー :element.send_keys(:up) ・↓キー :element.send_keys(:down) ・Ctrlキー(通常キーと組み合わせ) :element.send_keys(:control, 'a') →上記はCtrl+'a'キー押下時。第2引数に通常キーを指定 ・Deleteキー :element.send_keys(:delete) ・HOMEキー :element.send_keys(:home) ・ENDキー :element.send_keys(:end) ・ESCAPEキー :element.send_keys(:escape) ・イコール(=)入力 :element.send_keys(:equals) ・COMMANDキー :element.send_keys(:command) →上記はMacのみ ・F1キー :element.send_keys(:f1) ・シフトキー(通常キーと組み合わせ) :element.send_keys(:shift, 'abc') →上記はShift+'abc'押下時。第2引数に通常キーを指定 ・ページダウンキー :element.send_keys(:page_down) ・ページアップキー :element.send_keys(:page_up) ・スペースキー :element.send_keys(:space) ・リターンキー :element.send_keys(:return) ・タブキー :element.send_keys(:tab)