
右クリックなどマウスの操作を再現してみる
早速ですが質問をいただきましたので紹介していきます。
Webスクレイピングでマウスの右クリックは再現出来るのか?
という質問でした。
結論から申し上げますと可能です。専用のメソッドが用意されています。

Seleniumにはマウスの操作を再現するメソッドが各種用意されています。
加えてこのような質問をいただきました。
右クリックした後に出てくる選択肢をクリックしたい
右クリックしないと出てこない選択肢を選びたいのですが方法が分からないとの事でした。
これは「右クリック後にマウスを選択肢まで動かしてからクリックする」という作業の再現になります。
具体的には「マウスホバー」+「クリック」という2つの操作を行います。
マウスホバーはマウスオーバーと呼ばれることもある様です。同じ意味です。
このあと動画とコードを使って順番に解説していきます。
関連記事
Webスクレイピングは初期設定(環境構築)がマストです。
イチから紹介しています。
ブラウザはChromeを想定していますがEdgeで準備される方向けにも記事を用意しています。
Webスクレイピングは副業も可能にします。
自分で副業先を見つけるのは大変です。無料でエージェントさんに依頼してみませんか?

マウスでの操作を再現する
4つの操作を紹介します。
まずは記事のタイトルにもある様に右クリックと関連操作を紹介します。
後半でダブルクリックとクリック(左クリック)を紹介します。
- 右クリック
- マウスホバー(右クリック後に表示される選択肢を選ぶ)
- ダブルクリック
- クリック(左クリック)
右クリック
動画を用意しました。
右クリックとマウスホバーがどんな作業なのか分かります。
後半はWindowsのHOME画面を使って作業を説明しています。
(Web画面の操作で階層のある作業が用意できなかったので仮でWindowsの作業を使っています)
具体的なコードはマウスホバーと一緒に書いています。以下ご覧ください。
マウスホバー
マウスを指定した要素の上に置く事で要素の上にカーソルが浮いた状態でセットされている事になります。
この見た目の状態を「ホバー」と呼んでいます。「空中で停止する」というようなイメージです。
このマウスホバーについても動画で解説しています。
URL内の特定の要素の上までマウスのカーソルを運ぶという作業を再現できます。
よって右クリックと合わせた作業に限らずURL上の特定の要素を掴む事ができます。
再現というのが重要なポイントです。実際にカーソルが動いてきて要素を選ぶことはしません。
カーソルは見えませんが裏ではしっかり要素を掴む事ができています。
右クリックと合わせてコードを紹介します。その後解説していきます。
事例
以下のような事例を用意しました。

画像内の1~3を説明します。
- Web内の「AAA」を右クリック
- 「BBB」を含んだシートが表示される
- 「BBB」にマウスホバー
- 「CCC」を含んだシートが表示される
- 「CCC」をクリック
- ここは通常のクリック(左クリック)を予定しています
最終的には「CCC」をクリックしたいのですが最初からは表示されてないので1と2の作業をしています。
続いてコードを紹介します。
コード
コードです。画像で紹介した事例の作業をしています。
Sub 右クリック等()
'変数の定義
Dim wem As WebElement
Dim dr As New ChromeDriver
'Webドライバーを省略
With dr
.Start "chrome"
.Get "指定したURL"
'中略
'「AAA」を右クリック Contextメソッドを使用する
.FindElementByXPath("AAAのXPath").ClickContext
'変数wenにWebElementを格納する
Set wem = .FindElementByXPath("BBBのXPath")
'Mouseプロパティ→MouseクラスのMoveToメソッドでelementに変数wemを格納
'変数wemで指定したWebElementまでマウスホバーしたのと同じ状態を作り出している
.Mouse.MoveTo element:=wem
'「CCC」をクリック
.FindElementByXPath("CCCのXPath").Click
End With
End Sub
要素の指定はXPathを使っています。XPathの使い方が分からない方は以下記事をご覧ください。
解説
1、Web内の「AAA」を右クリック
14行目のコードです。
FindElementByXpathメソッドの戻り値(WebElement)が持つClickContextメソッドを使用します。
このClickContextメソッドが右クリックを再現しています。
2、「BBB」にマウスホバー
17行目と20行目のコードです。
FindElementByXpathメソッドの戻り値のWebElementクラス(オブジェクト)を変数wemに格納します。
続いてChromeDriverクラスのMouseプロパティ→MouseクラスのMoveToメソッドを使います。
変数wemをelementに代入します。これで変数wemへのマウスホバーを再現しています。
3、「CCC」をクリック
22行目のコードです。
WebElementクラス(オブジェクト)のClickメソッドです。
よくある作業の左クリックと同じ作業です。
ダブルクリック
WebElementクラス(オブジェクト)にClockDoubleというメソッドが用意されています。
WebDriver.FindElementByXPath("指定のXPath").ClickDouble
FindElementByXPathメソッドはWebElementを返します。
WebElmentクラス(オブジェクト)のClickDoubleメソッドを使うとダブルクリックを再現できます。
クリック(左クリック)
事例で紹介したコードの22行目と同じ操作です。
FindElement・・・メソッドで指定したWebElementのClickメソッドを使い左クリックを再現しています。
まとめ
これでマウスを使った操作の大半は再現出来る様になりました。
できる事も格段に増えます。
Webスクレイピングもワークシートを使った操作も対象物が違うだけで考え方は同じです。
オブジェクトを掴んでからオブジェクトに対して操作するという事の繰り返しです。
Webであれば表示されている要素です。ワークシートであればワークシートやセル(Range)ですね。
「要素を指定してから右クリック」や「要素を指定してからマウスホバー」を再現してみました。
今回はXPathを使いましたが他のタグでもコードを紹介しています。
nameタグでWebスクVBA×Selenium×ChromeでWebスクレイピング|nameタグを使う