【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)

VBAスクレイピング

こんにちは。blueです。

今回はSeleniumVBA-Excel VBAを用いたYahooメールへのログイン方法について説明します。

業務やプライベートにおいてサイトでのログインは日常的に行われていると思います。

この記事を読んでいただければ

  • Webサイトを表示させる
  • Webサイトでのログイン操作(ID,パスワード入力,クリック)ができる

ようになりますのでぜひ読んでいってください。

なお、2022年9月以降インストール方法の変更により変数の宣言方法が変わっています。
詳しい記事はこちらをご確認ください。

スポンサーリンク

前提

今回の方法でスクレイピングをするにはSeleniumVBAの導入が必要です。

方法については以下を参照ください。

今回のフロー

今回のフローは以下です。

  1. ChromeをたちあげてYahooサイトにアクセスする
  2. Yahooサイトの[メール]をクリックする
  3. ログイン画面にてユーザーネームを入力し、次へを押す
  4. パスワードを入力し、次へを押す

以下で詳しく説明します。

全コード

全コードは以下になります。なおユーザーIDパスワードは自分のものをご使用ください。

Sub sample()

    Dim driver As New WebDriver
    Dim mngr As New WebDriverManager
    Dim driverPath As String
    
    'WebDriverを自動更新するWebDriverManagerクラスを使用する
    driverPath = ".\chromedriver.exe"
    mngr.AlignChromeDriverWithBrowser driverPath
    
    'Chromeを選択してブラウザを開く
    driver.StartChrome
    driver.OpenBrowser
    
    'Yahooを開く
    driver.NavigateTo "https://www.yahoo.co.jp/"
  driver.Wait 1000

    'Yahooサイトの[メール]をクリックする
    driver.FindElement(by.CssSelector, "#StatusMail > a > dl").Click
    driver.Wait 1000
    
    'ログイン画面にてユーザーネームを入力し、次へを押す
    driver.FindElement(by.CssSelector, "#username").SendKeys "ユーザーID"
    
    driver.FindElement(by.CssSelector, "#btnNext").Click
    
    driver.Wait 1000
    
    'パスワードを入力し、次へを押す
    driver.FindElement(by.CssSelector, "#passwd").SendKeys "パスワード"
    
    driver.FindElement(by.CssSelector, "#btnSubmit").Click
    
End Sub

コードの説明

ChromeをたちあげてYahooサイトにアクセスする

WebDriver最新バージョンであるかどうかを確認し、Chromeを立ち上げます

 'WebDriverを自動更新するWebDriverManagerクラスを使用する
    driverPath = ".\chromedriver.exe"
    mngr.AlignChromeDriverWithBrowser driverPath

 'Chromeを選択してブラウザを開く
    driver.StartChrome
    driver.OpenBrowser

SeleniumVBAにWebDriverManagerクラスが用意されています。

バージョンが違う場合はこのクラスにより最新バージョンに変更してくれるのでとても便利です。

Chromeを立ち上げるにはStartChromeメソッドを使用します。

またブラウザを開くにはOpenBrowserメソッドを使用します。

Yahooを表示させるコードは以下になります。

  'Yahooを開く
    driver.NavigateTo "https://www.yahoo.co.jp/"
  driver.Wait 1000

TinySeleniumVBAでサイトにアクセスする際はNavigateToメソッドを使用します。

なおサイト名は目的に応じて変えることが可能です。

処理が早すぎて動かない場合を考慮してWaitメソッドを入れています。Waitメソッドの引数にミリ秒(ここでは1000ミリ秒)を記載することで指定秒数だけ待機することができます。

Yahooサイトの[メール]をクリックする

Yahooサイトのメールをクリックするにはクリックする部分の要素を取得し.Clickメソッドを使用します。

ここで要素を取得するにはChromeのデベロッパーツールを使用します。
使用方法は以下になります。

1 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリックする

クリックすると拡大します

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

クリックすると拡大します

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

クリックすると拡大します

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

クリックすると拡大します

5 VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付ける

  'Yahooサイトの[メール]をクリックする
    driver.FindElement(by.CssSelector, "#StatusMail > a > dl").Click
    driver.Wait 1000

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

クリックすると拡大します

ログイン画面にてユーザーネームを入力し、次へを押す

ログイン画面にてユーザー名を入力するにはユーザー名の部分の要素を取得し、SendKeysメソッドを用いてテキストを入力します。

1 先ほどと同様に 右上の3つボタンをクリック→[その他のツール]→[デベロッパーツール]をクリック

クリックすると拡大します

先ほどと同様にユーザー名の部分の要素を取得します。

2 出てきた画面の左上の矢印ボタンをクリック →入力する部分をクリック→ 選択した要素の部分で右クリック→[Copy]→[Copy selector]をクリック

クリックすると拡大します

3 VBAにて以下のコードを入力。セレクターには先ほどコピーした内容を貼り付ける

'ログイン画面にてユーザーネームを入力し、次へを押す
    driver.FindElement(by.CssSelector, "#username").SendKeys "ユーザーID"

指定した要素に対してSendKeysメソッドを実行することによって引数のテキストを入力できます。

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

次は下の「次へ」ボタンを入力することになりますが 【Yahooサイトの[メール]をクリックする】方法と同じ方法で要素を取得し、コードを入力します。

具体的には以下のコードになります。

driver.FindElement(by.CssSelector, "#btnNext").Click

パスワード画面が表示されます。

パスワードを入力し、次へを押す

パスワードの入力ユーザー名の入力と同じです。

同様にパスワードの部分の要素を取得したうえでSendKeysメソッドを用いてコードを入力します。

合わせてクリックメソッドを用意します。

'パスワードを入力し、次へを押す
    driver.FindElement(by.CssSelector, "#passwd").SendKeys "パスワード"
    
    driver.FindElement(by.CssSelector, "#btnSubmit").Click

Yahooメール画面が無事に表示されました。

クリックすると拡大します

ここでのまとめ

スクレイピングにおいてクリック操作テキスト入力基本中の基本です。

サイトにアクセスするだけであればボタン操作とテキスト操作で可能ですのでわずかなコードの理解で操作可能です

これができるだけでかなりの自動化は実感できますのでまずは自分がアクセスしたいサイトで試してみることをお勧めします。

ソフトのインストールは必要となりますが、SeleniumBasicはメソッドやプロパティについての説明があり、初心者向けとなっています。SeleniumBasicについて勉強されたい方は以下の記事も読んでみてください

SeleniumVBAに関する記事はこちら
【SeleniumVBA】初心者向けに導入方法についてわかりやすく説明します(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します。
【SeleniumVBA】Yahooメールへのログイン方法をわかりやすく説明する(Excel VBA)
【SeleniumVBA】スクレイピングで使うメソッドについて説明します2(Excel VBA)
【SeleniumVBA】スクレイピングをする為のメソッド一覧表
【SeleniumVBA】ブラウザを操作するメソッドについてサンプルコードを紹介します
【SeleniumVBA】2022年9月の更新に伴うコードの変更点について説明します。
【SeleniumVBA】アラート処理に関するメソッドについてコードを紹介します
【SeleniumVBA】待機処理に関するメソッドについてコードを紹介します

コメント

タイトルとURLをコピーしました