こんにちは。blueです。
今回はSeleniumBasic-Chromeを用いたYahooメールへのログイン方法について説明します。
業務やプライベートにおいてサイトでのログインは日常的に行われていると思います。
この記事を読んでいただければ
- Webサイトを表示させる
- Webサイトでのログイン操作(ID,パスワード入力,クリック)ができる
ようになりますのでぜひ読んでいってください。
なお「細かい説明とかは良いからコードを教えてほしい」という方は下のボタンから飛んでください。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。
前提
このサイトではSelenium-Chrome-VBAを用いたスクレイピングについて紹介します。
スクレイピングをするにはSeleniumとChrome Driver,NET.Frameworkのインストール、VBAでの参照設定が必要です。
方法については以下を参照ください。

またSeleniumで使うコードについては以下をご参照ください。

今回のゴール
YahooサイトにてログインID,パスワードを入力してYahooメールを見れるようにする
今回のフロー
今回のフローは以下です。
- ChromeをたちあげてYahooサイトにアクセスする
- Yahooサイトの[メール]をクリックする
- ログイン画面にてユーザーネームを入力し、次へを押す
- パスワードを入力し、次へを押す
以下で詳しく説明します。
全コード
全コードは以下になります。なおユーザーIDとパスワードは自分のものをご使用ください。
Sub sample()
Dim Driver As New Selenium.WebDriver
Driver.Start "chrome"
Driver.Get "https://www.yahoo.co.jp/"
Driver.FindElementByCss("#StatusMail > a > dl").Click
Driver.FindElementByCss("#username").SendKeys ("ユーザーID")
Driver.FindElementByCss("#btnNext").Click
Driver.FindElementByCss("#passwd").SendKeys ("パスワード")
Driver.FindElementByCss("#btnSubmit").Click
Stop
End Sub
コードの説明
ChromeをたちあげてYahooサイトにアクセスする
SeleniumのWebDriverを立ち上げてサイトを表示する際は以下のコードを入力します。
なおサイト名は目的に応じて変えることが可能です。
Dim Driver As New Selenium.WebDriver
Driver.Start "chrome"
Driver.Get "https://www.yahoo.co.jp/"
Yahooサイトの[メール]をクリックする
Yahooサイトのメールをクリックするにはメールをクリックする部分の要素を取得し、Clickメソッドを使用します。
要素を取得するにはChromeのデベロッパーツールを使用します。
右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリック

出てきた画面の左上の矢印ボタンをクリック

実際にクリックするメールの部分にカーソルを合わせます。なお要素には文字や画像、枠など多くのものが存在する為、クリックする際に必要な枠を選択します。

選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリック

VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付けます。
Driver.FindElementByCss("セレクター").Click
指定した要素に対してClickメソッドを実行することによってクリックすることができます。
以下がVBAに入力した画面です。なおプログラムが終了すると自動的にSeleniumは終了し、スクレイピングの画面が消えてしまいます。確認の際はStopを入力して止まるようにしてください。

ログイン画面が表示されます。

ログイン画面にてユーザーネームを入力し、次へを押す
ログイン画面にてユーザー名を入力するにはユーザー名の部分の要素を取得し、Sendkeysメソッドを用いてテキストを入力します。
先ほどと同様に 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリック

先ほどと同様にユーザー名の部分の要素を取得します。
出てきた画面の左上の矢印ボタンをクリック →入力する部分をクリック→ 選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリック

VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付けます。
Driver.FindElementByCss("セレクター").SendKeys ("ユーザーID")
指定した要素に対してSendkeysメソッドを実行することによってカッコ内のテキストを入力できます。
VBAに入力した画面がこちらです。同様にStopで止めておきます。

テキストが入力できました。

次は下の「次へ」ボタンを入力することになりますが Yahooサイトの[メール]をクリックする方法と同じ方法で要素を取得し、コードを入力します。
具体的には以下のコードになります。
Driver.FindElementByCss("#btnNext").Click
パスワード画面が表示されます。

パスワードを入力し、次へを押す
パスワードの入力もユーザー名の入力と同じです。
同様にパスワードの部分の要素を取得したうえでSendkeysメソッドを用いてパスワードを入力します。
合わせてクリックメソッドを用意します。
Driver.FindElementByCss("#passwd").SendKeys ("パスワード名")
Driver.FindElementByCss("#btnSubmit").Click
Yahooメール画面が無事に表示されました。

ここでのまとめ
スクレイピングにおいてクリック操作やテキスト入力は基本中の基本です。
サイトにアクセスするだけであればボタン操作とテキスト操作で可能ですのでわずかなコードの理解で操作可能です。
これができるだけでかなりの自動化は実感できますのでまずは自分がアクセスしたいサイトで試してみることをお勧めします。
VBAを使ったものではありませんが、Seleniumを勉強する為の基本的な書籍です。ブラウザやキー操作の基本的なコマンドは共通していますのでコードを書く際の参考になります。
↓困ったときは以下が頼りになります。私も利用させてもらってます😊。
Selenium-VBAでのWebスクレイピングに関する記事はこちらをどうぞ
Web-APIを用いたデータ取得に関する記事はこちらをどうぞ
【VBA】Web APIを使ってデータを取得する(OpenWeatherMap)1
【VBA】Web APIを使って時間別天気予報を取得する(気象庁API)
【VBA】Web APIを使ってLINE通知を行う(LINE Notify)1
コメント