Excel-VBAとSeleniumでChrome操作 【キー操作】

全ての画面操作、アプリの操作はキーボードだけで完結させたい!

Webフォームへの入力は、
マウスをほぼ触らずに入力が終わらないようなページは設計不備だと思う杉山です。

Selenium使って、TABキーを押した時と同じ動作をさせたい。とか
Enterキーを押した時と同じ動作をさせたい。なんて事があります。

KeysクラスがSeleniumに含まれているので、それを使いましょう。
で終わってしまうのですが・・・こんな感じに。

Dim ks As New Keys
Dim driver As New ChromeDriver

driver.Get (“https://www.yahoo.co.jp/”)
‘TABキー押下
driver.SendKeys (ks.Tab)
‘Enterキー押下
driver.SendKeys (ks.Enter)

リンクとか、ボタンにフォーカスが当たっているときに、
Spaceキー押下でクリックと同じ様な動きをするので、
WebElement.Click を使わずに、SendKeysでspaceキーを押すという手も使えます。

YahooのトップページをSendKeysだけで操作してみる

YahooJapanのトップページをPCで開くと、
左側に主要なサービス一覧とそのリンクが表示されています。

これらをFindElement~を使わずに、キー操作のみで次々に開く事をやってみよう!

TOPページがこれ

左の主なサービスの”ショッピング”にフォーカス当てるためには、
ページを開いてTABキーを21回押す事でできます。

For i=1 To 21
driver.sendKeys(ks.Tab)
Next

Chromeで新規タブを使ってリンクを開く場合は
Ctrl+Enterでできます。
新規タブでリンクを開いて、次の項目へフォーカスを移動させるのを適当に繰り返します。

For i = 1 To 10
driver.SendKeys ks.Control, ks.Enter
driver.SendKeys (ks.Tab)
Next

 

全体のコードはこんなんです。
ショッピングからファイナンスまでのリンクを別タブで開いて、
テレビのリンクにフォーカスを動かして終わります。

Dim ks As New Keys
Dim driver As New ChromeDriver

driver.Get (“https://www.yahoo.co.jp/”)

For i = 1 To 21
driver.SendKeys (ks.Tab)
Next

For i = 1 To 10
driver.SendKeys ks.Control, ks.Enter
driver.SendKeys (ks.Tab)
Next

MsgBox “記事が短くてつまらなかったわけじゃないよ?”

実行するとこの様にタブがいっぱい開かれます。

今回の様に、フォーカスを移動させる(操作要素を指定する)ために
TABキーを押す。のをプログラムで出来ますが、
ページ構成が変わった場合には、全部やり直しです。
対して、idとかnameはページの構成が変わっても変わりにくいものなので、
要素を指定する場合はidやname、cssセレクタなどを使いましょう。

キーボードだけで操作しているのと、同じ動作をSeleniumでも出来ますよ!
ってサンプルなので。

コメント