はじめに
SeleniumBasic使って、ブラウザ操作を自動化してるんですが、ファイル選択のダイアログボックスの操作とか、色々ゴシャゴシャコード書かないと行けないんで面倒だなと思ってたんですが、SendKeysでやったらサクサクできたんで忘れないように使い方を記しておこうと思います。
SeleniumBasicってなに?って方は以下の記事で紹介していますので参考にして下さい。
- WEBブラウザを自動操作する!Selenium Basicを始める!(Chrome編)
- WEBブラウザを自動操作する!Selenium Basicの使い方!その1(Chrome編)
- WEBブラウザを自動操作する!Selenium Basicの使い方!その2(Chrome編)
SendKeysの使い方
実際のコードの方がわかりやすいと思うのでサンプルコードから。
Sub sample()
' メモ帳の起動
Shell "C:\Windows\Notepad.exe", 1
'SendKeysでキー操作
SendKeys "文字を入力" '文字入力
SendKeys "{Enter}" 'Enterで改行
End Sub
メモ帳を起動して、そのメモ帳に”文字を入力”という文字列を入れて、Enterで改行するという簡単なコードです。
実行するとこのようになります。
注意してもらいたいのは、キー操作の自動化なので、F8キーでステップ実行すると、VBEのウィンドウがアクティブになってしまうので、”文字を入力”という文字が、コードの中に書かれてしまいます。
実行はF5で一気にやって下さい(^o^)
一応ステップ実行するとどうなるか
こんなんなっちゃいますw
このように、
SendKeys キーor文字列, 設定
”SendKeys”に続けて、第一引数で各キーに割り当てられている記号を書くことで、キーが押された状態を実現することができます。
文字列を指定すると、その文字列が送られます。
第2引数の設定は、TrueかFalseで指定します。Trueを指定すると、SendKeysで指定した処理が実行されてから制御が戻ります。Falseを指定すると、処理が住むのを待たずに実行が可能です。※省略するとFalse
使い方はシンプルで簡単ですね。
キーの記号
サンプルコード内である「”{Enter}”」のように、他のキーもどのように書くのかが決まっています。
キー | コード |
---|---|
SHIFT | + ※他のキーと組み合わせで使用 |
CTRL | ^ ※他のキーと組み合わせで使用 |
ALT | % ※他のキーと組み合わせで使用 |
BackSpace | {BACKSPACE} または {BS} |
Break | {BREAK} |
CapsLock | {CAPSLOCK} |
Clear | {CLEAR} |
Delete または Del | {DELETE} or {DEL} |
↓ | {DOWN} |
End | {END} |
Enter (テンキー) | {ENTER} |
Enter | ~ (チルダ) |
Esc | {ESCAPE} or {ESC} |
Help | {HELP} |
Home | {HOME} |
Ins | {INSERT} |
← | {LEFT} |
NumLock | {NUMLOCK} |
PageDown | {PGDN} |
PageUp | {PGUP} |
Return | {RETURN} |
→ | {RIGHT} |
ScrollLock | {SCROLLLOCK} |
Tab | {TAB} |
↑ | {UP} |
F1 ~ F15 | {F1} ~ {F15} |
【使用例】
サンプル | 説明 |
---|---|
SendKeys “abc” | a→b→cを順番に押した状態 |
SendKeys “{ENTER}” | Enterを押した |
SendKeys “{F4}” | [F4]を押した |
SendKeys “^(v)” | Ctrlキーを押しながらvを押した(ペースト) |
SendKeys “{ENTER 100}” | Enterを100回押した |
使い所
僕の場合は、WEBアプリケーションの自動操作で、SeleniumBasicと合わせて使っています。
例えば、画像をアップロードする場合とか、画像アップロードボタンを押すとファイル選択のダイアログボックスが出てきますので、
- 要素をクリックしてダイアログボックスを表示(この時点でダイアログボックスのファイル名が入るところが勝手にアクティブになっている)
- あらかじめEXCELシートに入れてあった、画像ファイルのPATHをコピー(sheet.Range(“A3”).copy とか)
- SendKeysでペースト(SendKeys “^(v)”)
- SendKeysでEnter(SendKeys “{ENTER}”)
driver.FindElementByCss("セレクタ").Click ’画像アップロードボタンクリック
sheet.Range("A3").Copy ’画像ファイルのPATHが記入してあるセルをコピー
SendKeys "^(v)", True ’ペースト
SendKeys "{ENTER}", True ’Enterで決定(ダイアログでいうと「開くが押される」)
みたいな感じでやると、画像アップロードできちゃいます(^o^)
まとめ
SendKeysを紹介しました!正攻法でダイアログボックスつかみに行こうとすると、ハンドルがなんちゃらかんちゃらって結構めんどくさいので、サクッとやりたい人は是非試してくださいね!
コメント