トップへ戻る

Autoitプログラミング

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」を送信します。