【VBA×Selenium】SendKeysでEnter・Tabなどの特殊キーを入力する方法

みなさんこんにちは。

Excel VBA×SeleniumでWebブラウザを自動操作していると、文字列を入力するだけではなく、

  • Enterキーを押す
  • Tabキーで次の項目へ移動する
  • Shift + Tabで前の項目へ戻る
  • Ctrl + Aで入力内容を選択する

といったキーボード操作が必要になることがあります。

このような操作は、SeleniumBasicのSendKeysメソッドとKeysクラスを使用することで実装できます。

今回は、Excel VBA×SeleniumでEnterやTabなどの特殊キーを入力する方法についてご紹介したいと思います。

この記事はこんな人におすすめ

この記事はこんな人におすすめです!

  • Webフォームへの入力処理を自動化したい人
  • VBA×SeleniumでEnterキーを押したい人
  • SendKeysの使い方を知りたい人
  • TabやShift + Tabを自動操作したい人
  • Ctrl + Aなどのショートカットキーを使用したい人

初学者向けの過去記事

VBA初学者のための関連項目については過去の記事でもご紹介しております。

SendKeysで特殊キーを入力する方法

SendKeysとは

Seleniumでは、Webページ上の入力欄へ文字を入力する際にSendKeysメソッドを使用します。

例えば、次のコードでは指定した要素へ文字列を入力できます。

'指定した入力欄へ文字列を入力する
Driver.FindElementById("target").SendKeys "hello world"

通常の文字列だけでなく、EnterやTabなどの特殊キーもSendKeysを使用して入力できます。

ただし、特殊キーを使用する場合はKeysクラスを使用します。

Keysクラスを使用する

まず、次のようにKeysオブジェクトを宣言します。

'EnterやTabなどの特殊キーを使用するためのオブジェクトを作成する
Dim Keys As New Selenium.Keys

これで、

Keys.Enter
Keys.Tab
Keys.Shift
Keys.Control
Keys.Escape

などを使用できるようになります。

Enterキーを入力する方法

Enterキーを入力するサンプルコード

今回はSeleniumの動作確認用サイトとして、次のページを使用します。

https://the-internet.herokuapp.com/key_presses

このページは、入力したキーを画面上で確認できるテストページです。

Seleniumの特殊キー入力を確認するKey Pressesテストページ

Enterキーを入力するコードは次のようになります。

Sub SendEnterKey()

    Dim Driver As New Selenium.WebDriver
    Dim Keys As New Selenium.Keys

    '========================================
    ' Chromeを起動する
    '========================================
    Driver.Start "Chrome"

    '========================================
    ' キーボード入力確認用ページを開く
    '========================================
    Driver.Get "https://the-internet.herokuapp.com/key_presses"

    '========================================
    ' 入力欄へEnterキーを送信する
    '========================================
    Driver.FindElementById("target").SendKeys Keys.Enter

End Sub

実行結果を確認する

コードを実行すると、ページ上にEnterキーが入力されたことを示す結果が表示されます。

Excel VBA×SeleniumのSendKeysでEnterキーを入力した結果

通常の文字列を入力するときと同じように、SendKeysの引数へKeys.Enterを指定するだけで実行できます。

その他の特殊キーを入力する方法

Tabキーを入力する

Tabキーを使用する場合は次のように記述します。

'Tabキーを押して次の要素へフォーカスを移動する
Driver.SendKeys Keys.Tab

Webフォームに複数の入力欄があり、次の入力項目へフォーカスを移動したい場合などに利用できます。

Shift + Tabを入力する方法

前の入力項目へ戻したい場合は、Shift + Tabを使用します。

'Shiftキーを押しながらTabキーを入力する
Driver.SendKeys Keys.Shift, Keys.Tab

SendKeysでは、修飾キーと別のキーを組み合わせて入力することもできます。

Ctrl + Aを入力する方法

入力欄にある文字列をすべて選択したい場合は、Ctrl + Aを使用できます。

Dim inputElement As Selenium.WebElement

'操作する入力欄を取得する
Set inputElement = Driver.FindElementById("target")

'入力欄へ文字列を入力する
inputElement.SendKeys "hello world"

'Ctrl + Aですべての文字列を選択する
inputElement.SendKeys Keys.Control, "a"

既に入力されている文字列を削除して、新しい値へ置き換える処理などにも応用できます。

よく使用する特殊キー

SeleniumBasicでは、さまざまな特殊キーを使用できます。

キー主な用途
Keys.EnterEnterキーを押す
Keys.Tab次の項目へ移動
Keys.ShiftShiftキー
Keys.ControlCtrlキー
Keys.Backspace1文字削除
Keys.DeleteDeleteキー
Keys.EscapeEscapeキー
Keys.Leftカーソルを左へ移動
Keys.Rightカーソルを右へ移動
Keys.Upカーソルを上へ移動
Keys.Downカーソルを下へ移動
Keys.SpaceSpaceキー

Webサイトによって必要なキーボード操作は異なりますので、処理内容に応じて使い分けてください。

SendKeysを使うときのポイント

要素に対するSendKeysとDriver.SendKeysの違い

今回の記事では、次の2種類の書き方を使用しています。

Driver.FindElementById("target").SendKeys Keys.Enter

と、

Driver.SendKeys Keys.Tab

特定の入力欄へ文字やキーを送信したい場合は、対象のWebElementを取得してSendKeysを実行すると分かりやすいです。

一方、現在フォーカスされている要素に対してキー操作を行いたい場合は、Driver.SendKeysを使用する方法もあります。

「どの要素に対してキーを入力しているのか」を意識して使い分けることが大切です。

VBA×Seleniumの関連記事

VBA×Seleniumでは、キーボード入力以外にもさまざまな操作が必要になります。

関連記事についても、必要に応じて参考にしてください。

最後に

いかがでしたでしょうか。

今回は、Excel VBA×SeleniumでSendKeysを使用し、EnterやTabなどの特殊キーを入力する方法についてご紹介しました。

文字列の入力だけではなく、

  • Enter
  • Tab
  • Shift + Tab
  • Ctrl + A

などを組み合わせることで、Webフォームの操作をより柔軟に自動化できます。

Webスクレイピングやブラウザ操作を自動化する際に、少しでも参考になれば幸いです。

開発依頼について

ココナラでWebスクレイピング開発サービスを出品しております。

自分で開発をしようと思ったけど、依頼したり、何か聞きたいことがあったりしたら

いつでもお気軽にご相談ください。

また、本ブログからご依頼いただいた方については割引特典がございますので、

ご不明点と合わせてメッセージをいただけると幸いです。

Excelにてブラウザ操作自動化ツールを作成します その作業、webスクレイピングを使って自動化しましょう!

ご興味がある方はこちら!!

コメントを残す

メールアドレスが公開されることはありません。 ※ が付いている欄は必須項目です

CAPTCHA