WEBサイトの自動ログイン
WEBサイトへ自動ログインするサンプルを紹介します(IEのみ対応)。
_IECreate 関数を使用してInternet Explorerブラウザのウィンドウを作成することもできますが、
ここでは ShellExecute 関数を使用してデフォルトのブラウザで指定したページを開きます。
(Internet Explorerをデフォルトのブラウザにする必要があります)
次のコードはYouTubeにログインするサンプルです。
#include <IE.au3>
GUICreate("ログインツール", 220, 40)
$widthCell = 200
$Btn1 = GUICtrlCreateButton(" Youtubeにログイン ", 10, 10, $widthCell)
GUISetState()
$Url = "YoutubeのログインページのURL"
$Title = "Youtubeのログインページのタイトル"
$UserNameType = "Email"
$PassType = "Passwd"
$LogInType = "signIn"
$UserName = "ユーザー名"
$Password = "パスワード"
While 1
$msg = GUIGetMsg()
Select
Case $msg = -3
Exit
Case $msg = $Btn1
login()
EndSelect
WEnd
Func login()
If WinExists($Title) Then
Else
ShellExecute($Url)
EndIf
_WinWaitActivate($Title, "")
$oIE = _IEAttach($Title, 'WindowTitle')
_IELoadWait($oIE)
$oEmail = _IEGetObjById($oIE, $UserNameType)
$oPasswd = _IEGetObjById($oIE, $PassType)
_IEFormElementSetValue($oEmail, $UserName)
_IEFormElementSetValue($oPasswd, $Password)
$oSignIn = _IEGetObjById($oIE, $LogInType)
_IEAction($oSignIn, "click")
Exit
EndFunc ;==>login
Func _WinWaitActivate($Title, $text, $timeout = 0)
WinWait($Title, $text, $timeout)
If Not WinActive($Title, $text) Then WinActivate($Title, $text)
WinWaitActive($Title, $text, $timeout)
EndFunc ;==>_WinWaitActivate
サンプルコードの説明
$Url には、YouTubeのログインページのURLを指定します。
$Title には、YouTubeのログインページのタイトルを指定します。
$UserNameType には、ユーザー名を入力する部分のIDを指定します。
$PassType には、パスワードを入力する部分のIDを指定します。
$LogInType には、ログインボタンの部分のIDを指定します。
ログインページのソースコードの中からIDを探します。
次のソースコードは、YouTubeのログインページのソースコードの一部です。
<strong class="email-label">ユーザー名</strong>
<input type="text"
name="Email" id="Email" value=""
>
</label>
<label>
<strong class="passwd-label">パスワード</strong>
<input type="password" name="Passwd" id="Passwd"
>
</label>
<input type="submit" class="g-button g-button-submit" name="signIn" id="signIn"
value="ログイン">
ログインページを見ると、「ユーザー名」の下に入力ボックスがありますね。
YouTube場合、<strong class="email-label">ユーザー名</strong>の後にある<input type="text" name="Email" id="Email" value="" の「id="・・・"」を見ます。
この場合、「Email」がユーザー名を入力する部分のIDになります。
<strong class="passwd-label">パスワード</strong>の後にある
<input type="password" name="Passwd" id="Passwd" の「「id="・・・"」、
「Passwd」がパスワードを入力する部分のIDになります。
<input type="submit" class="g-button g-button-submit" name="signIn" id="signIn"
value="ログイン"> の「id="・・・"」、「signIn」がログインボタンの部分のIDになります。
$oIE = _IEAttach($Title, 'WindowTitle') は、指定したウィンドウからオブジェクト変数を取得します。
_IELoadWait($oIE) は、ページがロードするまで次のコードを実行しないように待機します。
これを書いておかないと、ページがロードを待たずに次のコードを実行してしまうため、ページのロードが遅い場合、ユーザー名やパスワードの入力が失敗してしまいます。
$oEmail = _IEGetObjById($oIE, $UserNameType) は、ユーザー名入力部分のオブジェクト変数を取得します。
$oPasswd = _IEGetObjById($oIE, $PassType) は、パスワード入力部分のオブジェクト変数を取得します。
_IEFormElementSetValue($oEmail, $UserName) は、ユーザー名入力部分にユーザー名をセットします。
_IEFormElementSetValue($oPasswd, $Password) は、パスワード入力部分にパスワードをセットします。
$oSignIn = _IEGetObjById($oIE, $LogInType) は、ログインボタンの部分のオブジェクト変数を取得します。
_IEAction($oSignIn, "click") は、ログインボタンをクリックします。
サイトによっては、_IEAction($oSignIn, "click")が効かないところもあるので、_IEAction($oSignIn, "click")の代わりに ControlSend 関数や、Send 関数を利用して「Enter」を送信します。