Fippiyのプログラム学習内容アウトプットBlog

日々の学習内容をアウトプットして振り返りを実施する。

VBAプログラム開発、スクレイピング・ログイン機能【2-5-1】共通処理をクラスモジュール化する(IE読み込み待ち処理)

ログイン機能をプロシージャ化して書籍登録VBAで扱える様にしました。

そこで、他に作成したVBAについても同様にログイン処理を加えていこうと考えていました。

しかし、毎回一つのモジュール内に同じプロシージャをコピーしています。IE読み込み待ちのモジュールも同様です。

同じ物を何度も使用するのであれば1箇所へまとめておくべきと考えました。

今回はこの対処を行います。

  • 今回の目的
    • なぜやるか
    • やりたいこと
    • やったこと
  • 実施内容
    • 通化する方法を検討する
    • テスト用モジュールで作成する
      • IE読み込み処理をクラス化する
      • クラスモジュールを作成する
      • テスト用メインプロシージャから扱える様にする
      • 動作確認を行う

今回の目的

同一処理プロシージャが複数モジュールに配置されているので、一つに統合する

なぜやるか

プログラム作成観点として、同一処理は集約して参照できるようにするため。

やりたいこと

  • 標準モジュールから共通プロシージャを集約する方法を検討する
  • クラスモジュールを扱う
  • IEオブジェクト待機プロシージャをクラスモジュール化する

やったこと

  • 実装方法を調べる
  • クラスモジュールを作成する
  • クラスモジュールに対応する変数を用意する
  • クラスモジュールを参照して動作していることを確認する
続きを読む

VBAプログラム開発、スクレイピング・ログイン機能【2-4】ログインプロシージャを既存VBAに適用する

ログインプロシージャ化が完了したので、いよいよ既存のVBAコードへ反映させてログイン機能付きの処理とします。

これが完成すれば、毎回手動でログインしていた手間がなくなります。

  • 今回の目的
    • なぜやるか
    • やりたいこと
    • やったこと
  • 実施内容 
    • ログイン処理をどのように組み込むか 
      • 組み込み手順
    • ログインプロシージャを組み込む
      • 作成済みプロシージャを適用する
      • Call先が動作するように変数を用意する
      • VBAを動作させる 
    • 既存VBAの変数を見直す 
      • 順序や処理内容を考慮したコードへ変更する
      • 変数宣言の見直し
      • 配列宣言の見直し
      • 各ページアクセス時のチェック

今回の目的

ログインプロシージャを書籍登録VBAに組み込む

なぜやるか

書籍登録VBAを動作させるだけでログイン処理から自動的に実施できるようにするため

やりたいこと

  • ログインプロシージャを既存VBAへ組み込む
  • 引数として必要な変数を既存VBA側で準備する
  • Call呼び出しによるログインができることを確認する
  • 既存VBAの変数を全体的に見直す
  • 配列設定を見直す
  • 処理サイトアクセス毎にCall呼び出しを入れる

やったこと

  • プロシージャ組み込み順序を検討する
  • ログインプロシージャをコピーして扱えるようにする
  • 引数として設定している変数を用意する
  • ログインができることを確認する
  • 既存VBAの変数を見直す
  • 配列を再定義する
  • 処理サイトアクセスにCallを使う
続きを読む

VBAプログラム開発、スクレイピング・ログイン機能【2-3-2】ログイン処理をプロシージャ化する(ログインプロシージャ作成)

メインプロシージャまで作成できました。続けてログインプロシージャを作成していきます。

実施内容

ログインプロシージャを作成する

では、いよいよここからログイン処理としてCallされるプロシージャを確認します。

作成コード

# ログインプロシージャ(ログインプロシージャ)

Sub CheckLogin(objIE As InternetExplorer, htmlDoc As HTMLDocument, _

 Domain As String, ProcessDir As String, CheckFirstLogin As Boolean)

 'オブジェクト設定

  'ログイン設定(ディレクトリ)
  Dim LoginDir As String 'ログインディレクト
  LoginDir = "login" 'ログインディレクトリ指定
  Dim LoginPageURL As String 'ログインページURL
  LoginPageURL = Domain & LoginDir 'ログインページURL生成

  'ログイン設定(Web送信情報)
  Dim LoginEmail As String 'ログインメールアドレス
  Dim LoginPassword As String 'ログインパスワード
  LoginEmail = ThisWorkbook.Worksheets("ログイン設定").Cells(2, 1).Value 'Email
  LoginPassword = ThisWorkbook.Worksheets("ログイン設定").Cells(2, 2).Value 'Password

  '処理結果確認
  Dim LoginAnswer As String 'ログイン結果確認用
  Dim exitmsg As String 'メッセージ表示用
  'URL取得設定
  Dim ProcessPageURL As String '処理実施ページURL
  Dim ResponseURL As String '処理実施ページ表示後URL取得

 '処理実施ページ決定
 If CheckFirstLogin = True Then
  ProcessPageURL = LoginPageURL 'ログインページURL生成
 Else
  ProcessPageURL = Domain & ProcessDir '処理実施ページURL生成
 End If

 '処理実施ページへアクセス後、URL取得
 objIE.navigate ProcessPageURL 'IEで開く
 Call WaitResponse(objIE) '読み込み待ち
 ResponseURL = objIE.document.URL 'URL取得

 'ログイン画面表示時はログイン処理
 If ResponseURL = LoginPageURL Then
  Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット
  'フォーム入力

  htmlDoc.getElementsByName("email")(0).Value = LoginEmail
  htmlDoc.getElementsByName("password")(0).Value = LoginPassword
  htmlDoc.getElementsByClassName("form-group__submit")(0).Click


  'ログイン結果確認
  Call WaitResponse(objIE) '読み込み待ち
  ResponseURL = objIE.document.URL '読み込み後のURL取得
  Debug.Print ResponseURL 'デバッグ確認
  If ResponseURL = LoginPageURL Then
   LoginAnswer = "ログイン失敗"

   'オブジェクト終了処理を実施しておく
   objIE.Quit 'objIEを終了させる
   'ログイン失敗時はアラートをメッセージとして返す
   exitmsg = "ログインに失敗しました。"
   MsgBox exitmsg
   '続きの処理はせずに終了
   End
  Else
   LoginAnswer = "ログイン成功"
  End If
 Else
  LoginAnswer = "ログイン済み"
 End If

 'ログイン済みorログイン後サイトのHTMLオブジェクト取得
 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット

 '結果確認情報
 Debug.Print "結果表示開始"
 Debug.Print "CheckFirstLogin " & CheckFirstLogin
 Debug.Print LoginAnswer
 Debug.Print "ProcessPageURL " & ProcessPageURL
 Debug.Print "ProcessDir " & ProcessDir
 Debug.Print "Web表示Titleタグ " & htmlDoc.getElementsByTagName("title")(0).innerText
 Debug.Print "結果表示終了"
 Debug.Print ""

 '初回処理終了処理
 If CheckFirstLogin = True Then CheckFirstLogin = False

End Sub

ログイン処理及び動作確認の為のDebug.Printが記載されています。実際にはデバッグは削除することになるので、もう少し短くなります。

 

では、ここから順を追って内容を確認します。

コード自体が長いので、いくつかブロックに分けて再表示しつつ解説していきます。

 

オブジェクト設定

まずは、変数宣言と初期値の設定です。

 

# ログインプロシージャ(オブジェクト設定1)

'ログイン設定(ディレクトリ)
Dim LoginDir As String 'ログインディレクト
LoginDir = "login" 'ログインディレクトリ指定
Dim LoginPageURL As String 'ログインページURL
LoginPageURL = Domain & LoginDir 'ログインページURL生成

ログインディレクトリ変数にログインURLディレクトリ部を指定します。そしてログインURLとして、メインプロシージャで設定したドメインと組み合わせています。

 

# ログインプロシージャ(オブジェクト設定2)

'ログイン設定(Web送信情報)
Dim LoginEmail As String 'ログインメールアドレス
Dim LoginPassword As String 'ログインパスワード
LoginEmail = ThisWorkbook.Worksheets("ログイン設定").Cells(2, 1).Value 'Email
LoginPassword = ThisWorkbook.Worksheets("ログイン設定").Cells(2, 2).Value 'Password 

ログインフォームに入力するメールアドレスとパスワードを設定しています。今回はログイン設定ワークシートから設定を読み取れるようにしました。

 

# ログインプロシージャ(オブジェクト設定3)

'処理結果確認

Dim LoginAnswer As String 'ログイン結果確認用
Dim exitmsg As String 'メッセージ表示用

 

主にデバッグ用にメッセージが出力できる変数を用意しています。

 

# ログインプロシージャ(オブジェクト設定4)

'URL取得設定
Dim ProcessPageURL As String '処理実施ページURL
Dim ResponseURL As String '処理実施ページ表示後URL取得

処理実施ページURLを格納するProcessPageURL

アクセス結果として返されたページのURLを格納するResponseURLを宣言しています。

 

処理実施先URLの決定 

オブジェクト設定完了後は、アクセスするURLを設定します。

# ログインプロシージャ(処理実施URLの決定)

'処理実施ページ決定
If CheckFirstLogin = True Then
 ProcessPageURL = LoginPageURL 'ログインページURL生成
Else
 ProcessPageURL = Domain & ProcessDir '処理実施ページURL生成
End If

CheckFirstLoginの値によって初回アクセスであるか判定しています。

 

初回アクセス時はログインページURLを、

2回目以降であれば、処理を行うURLを、

ProcessPageURLとして設定しています。

 

 

指定URLへアクセスする

接続先が決定したので、実際にアクセスします。

# ログインプロシージャ(処理URLへアクセス)

'処理実施ページへアクセス後、URL取得
objIE.navigate ProcessPageURL 'IEで開く
Call WaitResponse(objIE) '読み込み待ち
ResponseURL = objIE.document.URL 'URL取得

IEオブジェクトに対してnavigateを利用し処理URLへアクセスを実施します。

IEの読み込み完了後、表示オブジェクトからURLだけを取得します。この時点でHTMLは読み込みません。

この時点では、ログインできているかどうか?=ログインページであるかどうかを確認するだけなので、HTML要素はまだ不要です。

 

 

アクセス完了後のURLを確認する(ログイン済) 

アクセス先のURLを元にログイン処理実施可否を判定します。

# ログインプロシージャ(アクセス後URLチェック・ログイン済)

'ログイン画面表示時はログイン処理
If ResponseURL = LoginPageURL Then

 ~ ログイン処理 ~


Else
 LoginAnswer = "ログイン済み"
End If

まず、取得URLがログイン画面URLでない場合。

ログイン画面のURLではないということは、ログイン画面は表示されていません。つまり、実際に処理を行う画面ログイン後の初期表示画面ということになります。

このケースはすでにログイン済ということになります。

 

アクセス完了後のURLを確認する(未ログイン) 

# ログインプロシージャ(アクセス後URLチェック・未ログイン)

'ログイン画面表示時はログイン処理
If ResponseURL = LoginPageURL Then
 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット
 'フォーム入力

 htmlDoc.getElementsByName("email")(0).Value = LoginEmail
 htmlDoc.getElementsByName("password")(0).Value = LoginPassword
 htmlDoc.getElementsByClassName("form-group__submit")(0).Click


 'ログイン結果確認
 Call WaitResponse(objIE) '読み込み待ち
 ResponseURL = objIE.document.URL '読み込み後のURL取得
 Debug.Print ResponseURL 'デバッグ確認


 ~ ログイン確認詳細 ~

 

Else
 LoginAnswer = "ログイン済み"
End If

取得URLがログインURLであればログイン画面が表示されており、ログインが必要となります。

フォーム入力が必要となるので、ここでHTML要素を取得し、必要情報を入力してログインします。

ログイン実施後は、再びIEの読み込み完了を待ちます。

 

ログイン実施後の結果を確認する

ログイン処理後、表示オブジェクトのURLを再度取得し、URLをチェックします。

# ログインプロシージャ(ログイン結果確認)

If ResponseURL = LoginPageURL Then
 LoginAnswer = "ログイン失敗"

 'オブジェクト終了処理を実施しておく
 objIE.Quit 'objIEを終了させる
 'ログイン失敗時はアラートをメッセージとして返す
 exitmsg = "ログインに失敗しました。"
 MsgBox exitmsg
 '続きの処理はせずに終了
 End
Else
 LoginAnswer = "ログイン成功"
End If

ログイン後の再取得URLについて再度判定します。

判定方法は先程と同じです。

 

取得URL=ログインURLであればログインは失敗です。

 

ログイン失敗の通知をして、そのままVBAは終了となります。

この時、メインプロシージャの一番最後でobjIEを終了する処理があるのですが、EndでVBAを終了させてしまうと、quit処理がないまま終わってしますので、quit処理を実施した状態で終了できるようにしています。

 

取得URLがログインURLでない場合は正常にログインできていると判断できます。

 

 

ログイン確認後の流れ

最後に、ログイン完了後の処理を確認します。

# ログインプロシージャ(ログイン確認後の処理)

 'ログイン済みorログイン後サイトのHTMLオブジェクト取得
 Set htmlDoc = objIE.document 'objIEで読み込まれているHTMLドキュメントをセット

 '結果確認情報
 Debug.Print "結果表示開始"
 Debug.Print "CheckFirstLogin " & CheckFirstLogin
 Debug.Print LoginAnswer
 Debug.Print "ProcessPageURL " & ProcessPageURL
 Debug.Print "ProcessDir " & ProcessDir
 Debug.Print "Web表示Titleタグ " & htmlDoc.getElementsByTagName("title")(0).innerText
 Debug.Print "結果表示終了"
 Debug.Print ""

 '初回処理終了処理
 If CheckFirstLogin = True Then CheckFirstLogin = False

End Sub

ログイン完了後の共通した処理としては、HTML要素を取得して何からの情報を扱うことになるので、要素取得をしています。

 

そしてそのあとは、表示確認用のデバッグ情報を集約しています。最終的にここは使用しません。

 

最後に、初回のログインチェックの場合はフラグを変更しています。2回目以降は指定したURLでチェックできるようにするための対応です。 

 

 

以上で、ログイン処理については専用のプロシージャとして再構成しました。

後は、ログイン処理プロシージャを今までに作成してきたVBAへ組み込んでやればログイン処理を含む一連のデータ処理が可能となります。

今回はあくまでログイン部分のみを切り出す為のテスト用プロシージャと連動した作りで考えていたので、実際に組み込むには若干修正が必要になるかもしれません。

 

 

VBAプログラム開発、スクレイピング・ログイン機能【2-3-1】ログイン処理をプロシージャ化する(組み込み検討とメインプロシージャ作成)

VBAによる書籍管理サイトログイン処理は完成しました。

後は、今までに作成してきたVBAコードに対して追加することで、各処理実施前にログイン状況が確認できるようになります。

※1記事にするには長くなったので分割しました。

今回の目的

ログイン処理をプロシージャ化して、Callするだけで動作できるようにする

なぜやるか

ログイン処理を今まで作成した複数の処理に対して組み込むのを簡単にするため

やりたいこと

  • ログイン処理だけを処理できるプロシージャを作成する
  • 画面遷移後に必ず行う処理もまとめておく
  • 動作確認用のメインプロシージャと組み合わせて試す

やったこと

  • 既存VBAコードへ組み込む方法を検討する
  • メインプロシージャとログインプロシージャへ分割する
  • メインプロシージャを作成する
  • ログインプロシージャを作成する[次回記事へ記載]

実施内容

既存VBAコードに組み込む方法を検討する 

ログイン処理は作成できたのですが、各々のVBAに組み込む事を想定しているので、先に組み込めるようにプロシージャ化させておき、Callによる呼び出しができるようにしていきます。

ログイン処理組み込み方法を考える

ログイン処理へ引数を設定して呼び出し先で処理をする…わけですが、引数として何を設定すべきかを考えます。

書籍情報登録のVBAで考えると、登録フォームとなるページのURLを指定してアクセスをしていました。

このフォームにアクセスした時にログイン状態であるかどうか確認をします。

この段階でアクセス先URLとログインページURLの2つが必要です。

ログイン処理自体は前回作成しました。

接続先へアクセスして、ログインページか確認することで判断できるので、メインプロシージャで実際にデータ処理するサイトのURLは必要です。初めに設定しておいてログインチェック時にもURLが扱える様に引数設定してやればURLを引き継いで使えます。

ログインページURLについては、ログインチェック時のみ使えればいいので、ログインチェック内だけで扱えるようにすれば引数としては必要ありません。

 

このあたりを考慮して書籍情報を処理するメインプロシージャと、ログイン処理を行うプロシージャで分割できれば、既存のVBAに簡単に追加実装できそうです。

いきなり既存VBAに組み込むことはせずに、前回作成したログインプロシージャを分割することでまずは作成することにしました。

 

 

メインプロシージャを作成する

まずは、動作テスト用メインプロシージャを再構成しました。

作成コード

# メインプロシージャ

Sub getURLtest()

 'オブジェクト設定

  'IEオブジェクト
  Dim objIE As InternetExplorer
  Set objIE = CreateObject("Internetexplorer.Application")
  objIE.Visible = False

  'HTMLオブジェクト
  Dim htmlDoc As HTMLDocument

  'URL設定
  Dim Domain As String 'Webドメイン
  Domain = "https://protected-fortress-61913.herokuapp.com/" 'ドメイン格納
  Dim ProcessDir As String '処理実施ディレクト
  ProcessDir = "book/isbn" 'ディレクトリ指定

  'VBA動作初回ログインチェック
  Dim CheckFirstLogin As Boolean 'ログインチェックフラグ
  CheckFirstLogin = True

 'ログイン状態チェック
 Call CheckLogin(objIE, htmlDoc, Domain, ProcessDir, CheckFirstLogin)

 

 'VBA各種処理の実施

  'navigate時にログイン状態を確認として挿入
  Call CheckLogin(objIE, htmlDoc, Domain, ProcessDir, CheckFirstLogin)

 'VBA各種処理完了

 objIE.Quit 'objIEを終了させる
 MsgBox "処理が完了しました。"

End Sub

テスト用のメインプロシージャです。

※ログイン処理は、Call CheckLogin()として呼び出せるようにしました。こちらの内容は次記事にて扱います。

オブジェクト宣言と初期値設定

初めにオブジェクト設定を実施しています。これはいままで作成したVBAと同様です。

変数名の全体的な見直しもしたので、名前が若干変更となっています。

 

アクセスURL設定を再構成する 

URL設定について既存設定から修正を行いました。

# メインプロシージャ(URL設定抜粋)

'URL設定
Dim Domain As String 'Webドメイン
Domain = "https://protected-fortress-61913.herokuapp.com/" 'ドメイン格納
Dim ProcessDir As String '処理実施ディレクト
ProcessDir = "book/isbn" 'ディレクトリ指定

このメインプロシージャは、既存VBAであるISBNから書籍登録を実施するを想定して作成しました。そのため、処理を行うディレクトリとして"book/isbn"を指定しています。

 

書籍登録サイトのURLを指定するにあたって、いままでは直接URLを指定していましたが、ドメインディレクトという指定に変更しました。実際にはログイン処理の中で結合してURLとして扱います。

これは、同一ドメインでの作業となるため、わざわざ個別に長い(とは限りませんが)ドメイン名を記述するという動作を繰り返しをしないためにも分けておくことで、ドメイン配下のディレクトリだけ変更すればいいようにしたためです。

また、万が一ドメインが変更になった際には、ドメイン名だけ変更で対応できるという利点もあります。

以上の考えにより、URL設定としてはドメイン名とアクセスするディレクトリを指定する形にしました。

 

VBA処理の始めにログインチェックを行う

URL設定が終われば、ログイン状況確認のプロシージャを呼び出し、ログイン後に今までの処理を実施する流れとなります。

# メインプロシージャ(ログイン処理呼び出し)

'VBA動作初回ログインチェック
Dim CheckFirstLogin As Boolean 'ログインチェックフラグ
CheckFirstLogin = True

'ログイン状態チェック
Call CheckLogin(objIE, htmlDoc, Domain, ProcessDir, CheckFirstLogin)

 

 'VBA各種処理の実施

  'navigate時にログイン状態を確認として挿入
  Call CheckLogin(objIE, htmlDoc, Domain, ProcessDir, CheckFirstLogin)

 'VBA各種処理完了

今回作成したVBAコードでは、ログイン処理のCallが2箇所存在しています。

1つ目は変数設定直後、2つ目は各種処理中に登場します。

はじめは2つ目の場所のみでいいと考えていました。書籍情報登録の処理であれば、ISBNコードを登録する画面を表示させた時にログイン状態であるかチェックできればそれで問題ありません。

では、なぜ変数設定直後にもCallしているのか?動作手順を確認しながら詳しく見ます。

 

ログインチェック実施ポイントを確認する

まず、今までに作成してきた書籍登録VBAの動作を改めて確認します。前提として事前に手動でログインをしています。

  1. VBA処理開始
  2. ISBNコードをワークシートから読み取り
  3. カンマ区切りテキスト作成
  4. Webで登録処理
  5. 登録結果を表示
  6. 上限超過分を4から繰り返し

ログインされた状態なので、ISBNコードを読み取ってWeb操作という流れでした。

 

ここに今回はログイン処理が加わります。

ログイン状態確認をWebアクセスのタイミングで行うと…

  1. VBA処理開始
  2. ISBNコードをワークシートから読み取り
  3. カンマ区切りテキスト作成
  4. ログイン状態確認
  5. Webで登録処理
  6. 登録結果を表示
  7. 上限超過分を4から繰り返し

3まではワークシート内のみの処理となり、4の段階でWebアクセスとなるので、この段階でログインチェックとなります。

そして、ログインできなかった場合は、その後の処理は実施できません。

せっかくワークシート内の情報処理が終わっているにもかかわらずWeb側の都合で処理が継続できずにエラー表示となることが想定されます。

しかも、2の作業が仮に10,000件であった場合、ロスとなる時間が大きくなります。

 

そこで、はじめにログインされている状態か一度確認しておくことで、ロスを減らせると考えました。 

  1. VBA処理開始
  2. ログイン状態確認
  3. ISBNコードをワークシートから読み取り
  4. カンマ区切りテキスト作成
  5. ログイン状態確認
  6. Webで登録処理
  7. 登録結果を表示
  8. 上限超過分を5から繰り返し

VBA処理が始まったら、まず初めにログイン状態を確認できるように変更しました。

これですべての処理の前にログイン状況が最初に確認されることになります。

ログインを確認できたら、そこから従来の処理を実施していく流れとなります。

 

VBA処理中にWebサイトへ何度もアクセスする可能性があるので、アクセスページが変更される度にログイン状態であるか確認します。これが、各VBA処理中にもログイン確認を呼び出しているコードとなり、2回Callされている理由です。

連続処理となるので、途中でタイムアウトによるログアウト状態になるのは考えにくいですが、基本的に画面遷移時には移動先のサイトがログイン状態であること=指定ページにアクセスできていることをチェックできるようにするため、このようなVBAコードにしました。

 

初回ログインチェック 

# メインプロシージャ(ログイン処理呼び出し)

'VBA動作初回ログインチェック
Dim CheckFirstLogin As Boolean 'ログインチェックフラグ
CheckFirstLogin = True

'ログイン状態チェック
Call CheckLogin(objIE, htmlDoc, Domain, ProcessDir, CheckFirstLogin)

 

 'VBA各種処理の実施

  'navigate時にログイン状態を確認として挿入
  Call CheckLogin(objIE, htmlDoc, Domain, ProcessDir, CheckFirstLogin)

 'VBA各種処理完了

先程ふれていなかったのですが、Call処理の前にCkeckFirstLoginという設定がありました。

こちらは、Callが2回行われていることに関係するのですが、初回のログインチェック呼び出しであることを判定するために用意しました

詳細はCall先で解説します。

 

以上でメインとなるプロシージャについては作成できました。

後はログイン処理プロシージャを作成して、Callによる呼び出しができるようにします。

 

次記事へとつづく…。

 

VBAプログラム開発、スクレイピング・ログイン機能【2-2】ログイン処理を作成する

ログイン機能の作成手順検討が終了したので、実際にVBAコードを作成して意図した通りの処理が行えることを確認していきます。 

  • 今回の目的
    • なぜやるか
    • やりたいこと
    • やったこと
  • 実施内容
    • ログイン処理を作成する 
      • URLを確認する
      • ログイン処理を行う
      • ログイン後の確認を実装する
      • ログインボタンクリック後にURLを確認する

今回の目的

VBA操作によるWebログインが行えるようにする

なぜやるか

ログイン状況を確認し、未ログイン時には自動的にログイン処理を実施し、その後の処理を続けて実施することで、一度の処理で全てを完結できるようにするため

やりたいこと

  • VBAによるWeb操作でログインフォームにアクセスして、ログイン情報を入力しログインを完了させる

やったこと

  • Web表示URLを確認する
  • ログイン画面で必要項目を入力してログインする
  • ログインできていることを確認する
続きを読む