こんにちは、blueです。
スクレイピングでEnterキーやCtrlキーなど特殊キーを打つ際はテキストを入力する時と同様SendKeysメソッドを使います。
ただ使い方が少し特殊ですので方法について説明します。
今回の記事は以下のサイト、Documentationをもとに作成しました。一つ目はPythonですが基本は同じですのでぜひご覧ください。
send_keys(special)-Python – Seleniumクイックリファレンス
Selenium Documentation(SeleniumBasic内のSelenim.chm)
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。
VBAの書籍の中でSeleniumBasicを取り上げている数少ない書籍です。ページ数としては20ページほどですがとてもわかりやすく書かれています。またVBA全般を網羅した内容が書かれており、長く使用することができます。
SendKeysメソッドで入力できる文字列
SendKeysメソッドの引数には文字列を指定することができます。
この文字列では2種類の文字列を指定することができます。
「通常キー(a,b,cなど)」と「特殊キー(Enter, Ctrlなど」です。
それぞれの入力方法ついて説明します。
通常キー(string)
こちらは文字や数字、記号の入力などテキストとして入力できるキーとなります。
これらはSendKeysの引数として””で囲むことで値をウィンドウや要素に渡すことができます。
Driver.FindElementBy〇〇〇(“”).SendKeys ”xxx”
特殊キー(keys.***)
こちらは文字や数字、記号の入力以外のテキストとして入力できないキーになります。
EnterやShift、Ctrlなど多くのキーが存在します。
これらは直接は入力できないのですが、SeleniumにはKeys Classが用意されています。
このクラスを用いて入力することができます(入力できる項目はおまけに記載)。
書き方は以下になります
Dim Keys As New Keys
Driver.FindElementBy〇〇〇(“”).SendKeys Keys.xxx
Keysはオブジェクトになるため事前に宣言が必要になることをご注意ください。
以下はGoogleの例ですが入力要素に対してEnterキーを打つことが可能になります。
Dim Keys As New Keys
Driver.Get "https://www.google.ne.jp"
Driver.FindElementByTag("input").SendKeys Keys.Enter
SendKeysメソッドの第一、第二引数
SendKyesメソッドでは2つまでの引数を指定することができます(3つは不可)
順序は自由ですが第一引数から実行されます。
この方法を使えば特殊キーを押しながらの操作や通常キーを押した後の操作が可能になります。
Driver..FindElementBy〇〇〇(“”).SendKeys Keys.xxx, string
Driver..FindElementBy〇〇〇(“”).SendKeys string, Keys.xxx
Driver..FindElementBy〇〇〇(“”).SendKeys Keys.xxx, Keys.xxx
「SendKeys Keys.***, string」は特殊キーを押しながらstringを入力する際に使います。
Shiftキーを押しながら入力することで大文字にするような場合です。
「SendKeys string, Keys.***」はstringを入力した後に特殊キーを押す動作になります。
入力した後にそのままEnterキーを押すことができます。
同様に「SendKeys Keys.***, Keys.***」と特殊キーを連続して打つことも可能です。
サンプル
Googleで「SELENIUM VBA」と入力した後キー操作を行って、「SELENIUM」として検索する際のコードは以下になります。
Sub sample()
Dim Driver As New Selenium.WebDriver
Dim elm As WebElement
Dim Keys As New Keys
Driver.Start "Chrome"
Driver.Get "https://www.google.ne.jp"
Set elm = Driver.FindElementByTag("input")
'Shiftキーを押しながらselenium vbaを入力する
elm.SendKeys Keys.Shift, "selenium vba"
'Back Spaceで一文字消去する
elm.SendKeys Keys.Backspace
'カーソルを一文字左にずらす
elm.SendKeys Keys.Left
'Deleteで一文字消去する
elm.SendKeys Keys.Delete
'Shift+<でvを選択する
elm.SendKeys Keys.Shift, Keys.Left
'Deleteで一文字消去し、Enterを押す
elm.SendKeys Keys.Delete, Keys.Enter
End Sub
実行結果は以下の様になります。
おまけ:Keysクラスに含まれる特殊キー
Selenium DocumentationによるとKeysクラスには多くの特殊キーが含まれています。
よく使うものを以下に上げます(説明は自動翻訳なのでご了承下さい)。
名称 | 説明 |
Backspace | Backspace キーを表す。 |
Control | Controlキーを表します。 |
Delete | Delete キーを表す。 |
Down | 下矢印キーを表します。 |
Enter | Enterキーを表します。 |
Escape | Escapeキーを表します。 |
F* | ファンクションキー F* を表します。 |
Left | 左矢印キーを表す。 |
Right | 右矢印キーを表します。 |
Shift | Shiftキーを表します。 |
Space | スペースバーキーを表します。 |
Tab | Tabキーを表します。 |
Up | 上矢印キーを表します。 |
今回のまとめ
今回はSeleniumBasicで特殊キーを使用する方法について説明しました。
SendKeysメソッドを使用することで可能ですが、Keysクラスの使用が必要となるのでご注意ください。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。
VBAの書籍の中でSeleniumBasicを取り上げている数少ない書籍です。ページ数としては20ページほどですがとてもわかりやすく書かれています。またVBA全般を網羅した内容が書かれており、長く使用することができます。
コメント