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. 色々なサービスを連携してくれるIFTTT(イフト)知ってますか?

  2. ホームページにカードっぽいものを置いてみよう

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

  4. Zoomでパワポスライドを見せながら

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

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

  7. ウェブサイトのSSL化進んでいますか?

  8. 3Dモデルで何かしてみたい

Comment

  1. No comments yet.

  1. No trackbacks yet.

スポンサーリンク

最近の記事

アーカイブページ

スポンサーリンク