【VBA×Selenium】Enterなどの特殊キーを入力する

みなさんこんにちは。

Webスクレイピングをする際、

ボタンクリックや情報取得のみならず、

キーボード入力をしたい状況になることも多いかと思います。

今回は、EnterキーやTabキー、Shift + Tabキーなどの特殊キーを入力する方法をご紹介したいと思います。

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

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

  • VBAプログラミング:初級者~中級者
  • Webスクレイピング初学者
  • コードだけサクッと取得したい人
  • 効率の良いコードを書きたい人

といったところでしょうか。

特殊キーの入力方法を知るメリット

特殊キーの入力方法を知るメリットは以下のとおりです。

  • コードの可読性向上
  • 汎用性が高く他のサイトにも応用が利く
  • Webスクレイピングの基本が定着する
  • 予期せぬエラーの回避

といったところでしょうか。

スクレイピングをする際は、キーボード入力をする場面に遭遇することが多いので、

一度やり方を覚えてしまえばかなり有効的なスキルになるかと思います。

初学者向けの過去記事

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

概要(ざっくりと)

スクレイピングでEnterキーやCtrlキーなど特殊キーを打つ際はテキストを入力する時と同様SendKeysメソッドを使います。

SendKeysメソッドの引数には文字列を指定することができます。

テキスト入力する際は引数に入力したい文字列を指定しますが、

特殊キーを入力する際も引数として指定する必要があり、

「通常 キー(a,b,cなど)」と「特殊キー(Enter, Ctrlなど」を指定します。

さっそく、それぞれの入力方法ついて説明します。

SendKeysメソッドで入力できる文字列

通常キー(string)

通常キーとは文字や数字、記号の入力などテキストとして入力できるキーとなります。

これらはSendKeysの引数として””で囲むことで値をウィンドウや要素に渡すことができます。

書き方は以下のようになります。

Driver.FindElementByXPath("").SendKeys "入力したい文字列"

実行例

オミカレというサイトのログイン画面でメールアドレス欄に”test@testmail.com”という文字列を入力したいときは以下のようになります。

driver.FindElementByXPath("/html/body/div[2]/div[1]/div/main/div/div/form/dl/div[1]/dd/input").SendKeys "test@testmail.com"

以下のようになります。

特殊キー(keys.***)

特殊キーとは文字や数字、記号の入力以外のテキストとして入力できないキーになります。

EnterやTabをはじめShift+Tabなど多くのキーが存在します。

これらは直接は入力できないので、 SeleniumのKeys Classを使用します。

書き方は以下のようになります。

Dim Keys As New Keys

Driver.FindElementByXPath("").SendKeys Keys.xxx

Keysはオブジェクトになるため事前に宣言が必要になります。

実行例

オミカレというサイトのログイン画面でTabキーを打つ場合は以下のような記述になります。

Dim Keys As New Keys

Driver.Get "https://party-calendar.net/auth_user/login"
Driver.SendKeys Keys.Tab

SendKeysメソッドの第一、第二引数を使用する

SendKeysメソッドでは2つまで引数を指定することができます。

順序は自由ですが第一引数から実行されます。

この方法を使えば特殊 キーを押しながらの操作や通常キーを押した後の操作が可能になります。

例えばShift + Tabや、Ctrl + Cなどになります。

Driver.SendKeys Keys.xxx, <入力したい文字列>

Driver.SendKeys <入力したい文字列>, Keys.xxx

Driver.SendKeys Keys.xxx, Keys.xxx

「SendKeys Keys.〇〇〇, <入力したい文字列>」とすると特殊キーを押しながら文字列を入力する際に使います。

大文字入力をしたいときなどに利用します。

「SendKeys <入力したい文字列>, Keys.〇〇〇」とすると入力した後に特殊キーを押す動作になります。

文字列を入力した後にEnterキーを押すときなどに利用します。

「SendKeys Keys.〇〇〇, Keys.〇〇〇」と特殊キーを連続して打つ動作になります。

Shift + Tabや、Ctrl + Cを押すときなどに利用します。

コードサンプル

オミカレというサイトのログイン画面で今までご紹介したコードを使用する際は以下のような記述になります。

Sub sample()
    Dim Driver As New Selenium.WebDriver
    Dim Keys As New Keys
     
  Driver.Start "Chrome"
    Driver.Get "https://party-calendar.net/auth_user/login"
      
    'Shiftキーを押しながらhello worldを入力する
    Driver.FindElementByXPath("/html/body/div[2]/div[1]/div/main/div/div/form/dl/div[1]/dd/input").SendKeys Keys.Shift, "hello world"

    'Back Spaceで一文字消去する
    Driver.SendKeys Keys.Backspace

    'カーソルを一文字左にずらす
    Driver.SendKeys Keys.Left

    'Deleteで一文字消去する
    Driver.SendKeys Keys.Delete

    'Shift+<でvを選択する
    Driver.SendKeys Keys.Shift, Keys.Left

    'Deleteで一文字消去し、Enterを押す
    Driver.SendKeys Keys.Delete, Keys.Enter

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

    'Shift + Tabキーを押してフォーカスを移動する
    Driver.SendKeys Keys.Shift, Keys.Tab
     
End Sub

よく利用するKeysクラスに含まれる特殊キー

よく利用するであろう特殊キーをいかにピックアップしてみました。

名称説明
BackspaceBackspace キーを押す。
ControlCtrlキーを押す。
DeleteDelete キーを押す。
EnterEnterキーを押す。
EscapeEscapeキーを押す。
F*ファンクションキー F* を押す。
Left左矢印キーを押す。
Right右矢印キーを押す。
Up上矢印キーを押す。
Down下矢印キーを押す。
ShiftShiftキーを押す。
Spaceスペースキーを押す。
TabTabキーを押す。

最後に

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

Seleniumを使用しているとキーボード入力を使用する場面に遭遇することが多々あります。

ですので、しっかりマスターしてキーボード操作をサクッと実装できると業務効率も格段に向上するかと思います。

そのきっかけとして、少しでも参考になればと思います。

開発依頼について

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

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

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

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

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

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

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

コメントを残す

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

CAPTCHA