SeleniumBasicの操作(基礎編)第4回:Web要素をクリック

 SeleniumBasicでホームページを開き、Web要素キャッチ後に各種Web操作が可能になります。そこで、今回はSeleniumBaisicの操作(基礎編)第4回目として、下図Web操作フロー図の中の「クリック」について解説していきます。

スクロールできます
ブラウザの起動
Web操作
ブラウザを閉じる

Web要素のキャッチ
ウィンドウの操作
フレームの移動
スクリーンショットの取得
HTML情報の取得
Cookie情報取得
(Web操作の代表的な操作例)

クリック
文字列入力
チェックボックス操作
ドラッグアンドドロップ
ドロップダウンリスト選択
ダイアログボックスの操作
テーブルデータの取得
ファイルダウンロード
Web要素のプロパティ取得
(Web要素キャッチ後のメソッド例)
目次

マクロファイルダウンロード

 このページで掲載しているVBAのマクロファイルを以下リンクからダウンロードできます。必要に応じてファイルダウンロードして活用ください。

ダウンロードファイルのマクロ実行注意事項(ここをクリック)

 ファイルダウンロード後、マクロ実行するまでの注意事項を記載しておきます。

STEP
SeleniumBasicのインストール、ChromeDriverの更新

 マクロファイルを実行するには、事前にSeleniumBasicをインストールしておく必要があります。同時にChromeDriverを現在のChromeブラウザのバージョンに合わせて更新しておきます。SeleniumBasicのインストールとChromeDriverの更新については以下記事を参照ください。

STEP
コンテンツの有効化

マクロファイルを開き、「コンテンツの有効化」をクリックします。

STEP
セキュリティ リスク設定の確認

 Web上からダウンロードしたマクロファイルはデフォルトで実行できない様に設定されています。ダウンロードしたマクロファイルを開いて以下の様に(このファイルのソースが信頼できないため、Microsoftによりマクロの実行がブロックされました。)表示される場合はファイルプロパティを変更します。

STEP
ファイルプロパティの変更

 ファイルプロパティを開いて、セキュリティ項目の「許可する」にチェックを入れ、「OK」をクリックする。

STEP
Selenium Type libraryのチェック

 VBE(Visual Basic Editor)画面の参照設定を開き、「Selenium Type library」にチェックを入れて、OKをクリックします。

STEP
デバッグ実行

 一度ファイルを閉じて、再度ファイルを開き、「コンテンツの有効化」をクリックします。その後、マクロ実行します。ダウンロードファイルは基本的に実行ボタンを実装していませんので、マクロファイルを実行するには、VBEを開き、デバッグ実行によって、スクリプト実行します。

 Excelファイルを開いた後、Alt + F11にてVBEエディタを開き、該当のプロシージャまでカーソル移動して、F5にてデバッグ実行します。

Web要素のクリック(左クリック)

VBAコード

まずはVBAのコードを紹介します。

Private Sub FindElement_click()
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    Dim elm As WebElement
    Set elm = driver.FindElementByLinkText("Googleについて")
    driver.Wait 2000
    elm.Click
    driver.Wait 2000
    Stop
    driver.Quit
End Sub

動作解説

 Googleホーム画面から検索ボックスに文字列を入力して、検索実行するまでをSeleniumBasicで実行できる様にします。以下の様なステップを踏みます。イメージはクリックすると拡大表示されます。

1. Googleホームページを開く

Dim driver As New ChromeDriver
driver.Get "https://www.google.co.jp"

 ChromeDriverのインスタンス生成し、GoogleChromeを立ち上げます。これでChromeブラウザを操作できる様になります。このdriverオブジェクトで指定したURLのホームページを開く事ができる様になります。今回は、Googleホームページを指定しました。

2. リンクテキストのWeb要素キャッチ

Web要素のキャッチ + Web要素をelm変数に代入

Dim elm As WebElement
Set elm = driver.FindElementByLinkText("Googleについて")

 ChromeDriverクラスのFindElementByLinkTextメソッドを利用してWeb要素をキャッチします。また、elmオブジェクトに当該のWeb要素を代入します。メソッドの引数としてGoogleChromeホームページ左上に記載されている"Googleについて"のリンクテキストを検索してキャッチしています。

3. 待機(2秒)

driver.Wait 2000

 ChromeDriverクラスのWaitメソッドを利用し、動作を2秒間(2000ミリ秒間)ストップしています。2秒間待機せずともSeleniumBasicは次の動作を実行してくれるのですが、待機時間を設けないとホームページが立ち上がってから即座にクリック動作されるので、動作状況(画面の変遷)を人間の目でも見やすくするため待機時間を設けています。

4. リンクテキストをクリックする

elm.Click

 変数elmに代入したWebElementクラスでキャッチしたリンクテキストの"Googleについて"をクリックして、画面をリンク先に変遷させます。画面イメージは変遷後のページ画面です。

Web要素のクリック(特殊キー + 左クリック)

 前段では単純な左クリックの動作を紹介しました。ここでは、特殊キー(Shift, Ctrl, Alt)を押しながらクリック動作する方法を紹介します。これらの操作ができる様になれば、Webスクレイピングでできることが増えますので、是非学習してみてください。構文自体は簡単です。

 GoogleChromeブラウザ上で特殊キー+左クリックをすると、通常の左クリック動作とは異なる動作がショートカットで可能になります。以下ショートカット例です。

ショートカットコマンド解説
Ctrl + 左クリック新規タブにリンク先ページを開く。(新規タブはバックグラウンドで開く。)
Shift + 左クリック新規ウィンドウにリンク先ページを開く。
Alt + 左クリックリンクテキストをクリックすると、リンク先を開くかずにリンク先のダウンロードを開始する。
Ctrl + Shift + 左クリック新規タブにリンク先ページを開く。(新規タブはリンク先を開く。)

 特殊キー+左クリックの動作は以下構文で実行できます。

Webelemet.Click <特殊キー>

 これだけではよく分からないと思いますので、「習うより慣れろ」という事で以下具体例を見ながら動作方法を確認してみてください。

Ctrl + 左クリック(新規タブを開く)

 「Ctrl + 左クリック」で新規タブにリンク先ページを開きます。(新規タブはバックグラウンドで開きます。)

Private Sub FindElement_click_Ctrl()
    Dim keys As New keys
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    Dim elm As WebElement
    Set elm = driver.FindElementByLinkText("Googleについて")
    driver.Wait 2000
    elm.Click keys.Control
    driver.Wait 2000
    Stop
    driver.Quit
End Sub

ここで肝になる実行文は2行目と8行目の命令文です。

Dim keys As New keys

 ShiftやCtrl等の特殊文字を入力するためにDim KeysでKeysクラスのインスタンスを生成して、特殊文字を入力できる準備をしています。Keysクラスで入力できる特殊文字列の一覧はこちらから確認できます。

elm.Click keys.Control

elm.Click <特殊キー>」の構文でCtrl+左クリックを実行しています。

Shift+ 左クリック(新規ウィンドウを開く)

 「Shift + 左クリック」で新規ウィンドウにリンク先ページを開きます。

Private Sub FindElement_click_Shift()
    Dim keys As New keys
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    Dim elm As WebElement
    Set elm = driver.FindElementByLinkText("Googleについて")
    driver.Wait 2000
    elm.Click keys.Shift
    driver.Wait 2000
    Stop
    driver.Quit
End Sub

 Ctrl+左クリックの解説と同様、肝になる実行文は2行目と8行目の命令文です。(2行目の解説はCtrl+左クリックと同様ですので割愛します。)

elm.Click keys.Shift

elm.Click <特殊キー>」の構文でShift+左クリックを実行しています。

Alt + 左クリック(リンク先をダウンロード)

 「Alt + 左クリック」でリンクテキストをクリックすると、リンク先を開くかずにリンク先のダウンロードを開始します。本来はもう少し細かく設定が必要なのですが、ここではAlt + 左クリックでダウンロードができる、と思っててください。

Private Sub FindElement_click_Alt()
    Dim keys As New keys
    Dim driver As New ChromeDriver
    driver.Get "https://policies.google.com/terms?hl=ja"
    Dim elm As WebElement
    Set elm = driver.FindElementByLinkText("PDF をダウンロード")
    driver.Wait 2000
    elm.Click keys.Alt
    driver.Wait 2000
    Stop
    driver.Quit
End Sub

 Ctrl+左クリックの解説と同様、肝になる実行文は2行目と8行目の命令文です。(2行目の解説はCtrl+左クリックと同様ですので割愛します。)

elm.Click keys.Alt

elm.Click <特殊キー>」の構文でAlt+左クリックを実行しています。

Ctrl + Shift + 左クリック(新規タブを開く+新規タブへ移動)

 「Ctrl + Shift + 左クリック」で新規タブにリンク先ページを開きます。新規タブはリンク先を開きます。CtrlとShiftを同時に押下しなければなりません。「elm.Click <特殊キー>」の構文では一度に一つの特殊キーしか押下できませんので、構文を「&」で繋げます。構文を公式化すると以下の表現になります。

Webelemet.Click <特殊キー> & <特殊キー>

以下、構文例です。

Private Sub FindElement_click_CtrlShift()
    Dim keys As New keys
    Dim driver As New ChromeDriver
    driver.Get "https://www.google.co.jp"
    Dim elm As WebElement
    Set elm = driver.FindElementByLinkText("Googleについて")
    driver.Wait 2000
    elm.Click keys.Control & keys.Shift
    driver.Wait 2000
    Stop
    driver.Quit
End Sub

 Ctrl+左クリックの解説と同様、肝になる実行文は2行目と8行目の命令文です。(2行目の解説はCtrl+左クリックと同様ですので割愛します。)

elm.Click keys.Control & keys.Shift
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

VBAを中心とした自動化、効率化の手法を紹介しています。現在は、SeleniumBasicのexamplesを紹介しています。その内、SeleniumBasic以外の手法も掲載したいと思っております。

目次