質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

ただいまの
回答率

88.63%

VBSを使用してのHP自動ログイン

受付中

回答 1

投稿

  • 評価
  • クリップ 0
  • VIEW 12K+
退会済みユーザー

退会済みユーザー

 前提・実現したいこと

VBSを使用して社内システムに自動ログインしたい

 発生している問題・エラーメッセージ

IEが起動しHP表示されるがログインページが
新規ウィンドウで立ち上がりID,PASSが入力できない

 該当のソースコード

作成したVBS

'頭で固定値をセットする 自分の番号をセットする。
strUID  = "**"  'ユーザー-ID、メールアドレスの人もいる
strPassword = "**"       'パスワードあまりスクリプトには保存したくないけど

'IEの起動

Dim objIE  '変数を定義します。
Set objIE = WScript.CreateObject("InternetExplorer.Application") 'オブジェクト作成
objIE.Visible = True      '可視、Trueで見えるようにします。

'処理したいページを表示します。
'ここでは、ログインページを直接呼びます
objIE.Navigate "http://*************"

'ページの表示完了を待ちます。
While objIE.ReadyState <> 4 Or objIE.Busy = True '.ReadyState <> 4の間まわる。
WScript.Sleep  100  '0.1秒待つ 1000で1秒
Wend

'ユーザー-ID(name=u)にセットする。
Set objU = objIE.Document.getElementsByName("loginBTO.userId") '変数に一度セットする

If objU.Length = 0 Then  '.Lengthで 取得したエレメントの数がわかります
'終了処理/エラー処理 0の時は見つからなかったので 
Msgbox "ログイン失敗"
WScript.Quit   'スクリプトを途中で抜ける
End If

objU(0).Value = strUID   'データをセットする
Set objU = Nothing  'オブジェクト変数解放

'パスワード(name=p)にセットする。
objIE.Document.getElementsByName("loginBTO.password").Item(0).Value = strPassword 'セットする

'次へ ボタンを探して押す
'input type="submit" value="             ログイン             "> を 探す

'INPUTのタグを集める .getElementsByTagName("INPUT")を使用
Set objINPUT = objIE.Document.getElementsByTagName("INPUT")

'ループで頭からテキストが 次へ を探す
For n = 0 To objINPUT.Length - 1
'※ type="submitボタンなので、.InnerTextじゃなくて、.Valueです ※※注意
If Instr(objINPUT(n).Value,"次へ") > 0 Then  '文字列の中から見つけたら
objINPUT(n).Click  '見つけたINPUTタグのオブジェクトをクリック
Exit For
End If
Next

Set objINPUT = Nothing  'オブジェクト変数解放

 試したこと

 補足情報(FW/ツールのバージョンなど)

HPソース

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>

<head>
<meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS">
<meta http-equiv="content-script-type" content="text/javascript">
<meta http-equiv="content-style-type" content="text/css">
<title>"ログイン"</title>
<script type="text/javascript" src="js/Common.js"></script>
<link rel="stylesheet" href="css/Common.css" type="text/css">
<style type="text/css">
<!--
body {
width: auto;
}

td {
background-color: transparent;
}

input.button_width {
width: 10em;
}
-->
</style>
<script type="text/javascript">
<!--

submitFlag = false;

var doublepressmsg = "WWG01001 ボタン及びリンクの二重押下は禁止されています。";

var doubleLoginmsg = "null";

function login() {
document.loginForm.action = "login.do";
submitForm(document.loginForm);
}

function goPassChange() {
document.loginForm.action = "goPassChange.do";
loginForm.submit(); 
}

function doubleLogin() {
// index.html から起動されなかった場合は、index.htmlに遷移。
// ブラウザバージョンチェックの実施およびメニューなどを消して起動するため。
var fromIndex = 'from_index';
var locationHref = "./";        
if (window.name != fromIndex) {
location.href = locationHref;
return;          

if (doubleLoginmsg != "null") {
alert(doubleLoginmsg);
}
}
//-->
</script>
</head>
<body onload="doubleLogin()">
<table align="center" bgcolor="#000067" border="0" width=100%>
<tr>
<td align="center">
<img src="image/h_logotop1.jpg" alt="logo">

</td>
</tr>
</table>
<hr>
<div align="center">
<!-- エラーメッセージ出力 -->

</div>
<form name="loginForm" method="post" action="/bba-web/login.do">
<INPUT type="hidden" name="screenBTO.eventId" value="1">

<table align="center" summary="login" frame="box" style="width: 800px " border="0">
<colgroup span="2" width="25%">
</colgroup>
<tr>
<td>&nbsp;
</td>
<td class="center">ユーザID
</td>
<td>
<input type="text" name="loginBTO.userId" maxlength="50" size="20" value="" class=".login">

</td>
</tr>
<tr>
<td>&nbsp;
</td>
<td class="center">パスワード
</td>
<td>
<input type="password" name="loginBTO.password" maxlength="50" size="20" value="" class=".login">

</td>
</tr>
<tr>
<td colspan="3">&nbsp;
</td>
</tr>
<tr>
<td>
</td>
<td class="right">
<input type="button" name="button1" value="ログイン" onclick="login()" onkeypress="" id="loginButton" class="button_width">

</td>
<td>
<input type="button" name="button2" value="パスワード変更" onclick="goPassChange();" onkeypress="" id="changeButton" class="button_width">

</td>
</tr>
</table>
<br>
<table align="center" summary="notice" border="0">
<tr>
<th class="center">お知らせ
</th>
</tr>
<tr>
<td align="center">

</FONT>
<BR>

</td>
</tr>
</table>
</form>
<script type="text/javascript" language="JavaScript">
<!--
var focusControl = document.forms["loginForm"].elements["loginBTO.userId"];

if (focusControl != null && focusControl.type != "hidden" && !focusControl.disabled && focusControl.style.display != "none") {
focusControl.focus();
}
// -->
</script>

</body>
</html>

  • 気になる質問をクリップする

    クリップした質問は、後からいつでもマイページで確認できます。

    またクリップした質問に回答があった際、通知やメールを受け取ることができます。

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

+2

https://teratail.com/questions/156884
ここらへんがさんこーになりますねー

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

15分調べてもわからないことは、teratailで質問しよう!

  • ただいまの回答率 88.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る