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でも出来ますよ!
ってサンプルなので。

Related post

  1. 自動Gmail下書き作成で1週間分メール作成

  2. Webページを自動操作してみた

  3. 9年間使ってきたATOKを辞めます

  4. ZOOMでクロマキー合成使って差別化を狙う

  5. SeleniumとVBAでChromeを操作する

  6. GASをWebアプリ化させる

  7. Gmailの下書きを自動で作る

  8. 質問の答えが返ってきません

Comment

  1. No comments yet.

  1. No trackbacks yet.