DOBON.NET DOBON.NETプログラミング掲示板過去ログ

ログインのボタンを押す方法

環境/言語:[Windows XP]
分類:[.NET]

B.NET2005を使用しております。
以前お世話になりました、ふろんです。
現在、自動入力のプログラムを作成しています。

Tgturl = "http://id.fc2.com/"
WebBrowser1.Navigate(Tgturl)
に対象サイトを表示して
自動でID・PSを入力するところまでは、色々調べてできましたが
ヤフーのメールの場合は。IDとPSだけ入力すれば入れるのですが

FC2ブログのログインは”ログイン”ボタンを押さないと入れません
ここでつまずいているのですが、検索で調べますと
webBrowser1.Document.Forms(0).InvokeMember("submit")
でいけるはずなのですが、反応しません。

この部分のソースは下記のようになってるのですが

"ログイン" "submit"でも反応なしです。
というか、今ひとつ上記のコードが理解できてませんので
使い方が良く分かりません。

よろしく、ご教授お願いします。

function login_form_check()
{
if( document.form_login.email.value == "" )
{
alert( "メールアドレスを入力して下さい。");
return false;
}

if( !check_email(document.form_login.email.value) )
{
alert( "「" + document.form_login.email.value + "」はメールアドレスとして無効な文字列です。");
return false;
}

if( document.form_login.pass.value == "" )
{
alert( "パスワードを入力して下さい。");
return false;
}

if( !check_pass_str( document.form_login.pass.value ))
{
alert( "パスワードに使えるのは半角の英数字のみです。");
return false;
}
return true;
}

function alert_keep_login()
{
if( !document.form_login.keep_login.checked ) return;



問題を解決するために

http://oshiete.nikkeibp.co.jp/kotaeru.php3?q=2273418

http://www.atmarkit.co.jp/bbs/phpBB/viewtopic.php?topic=32083&forum=7

で調べましたがうまくいきません。
これだとどうでしょう?

        AxWebBrowser1.Document.GetElementById("email").SetAttribute("value", "めあど@meado.com")
        AxWebBrowser1.Document.GetElementById("pass").SetAttribute("value", "ぱすわーど。")

        'Microsoft HTML Object Libraryを参照追加しておいて、フォームエレメント型に一旦受けて処理。
        'こうしないと「マーシャラの制約:文字列が長すぎます」でエラーになったので。
        Dim formElement As mshtml.HTMLFormElement = Me.AxWebBrowser1.Document.Forms("form_login")
        formElement.submit()
        'Me.AxWebBrowser1.Document.Forms("form_login").submit() 'これも「マーシャラの制約:文字列が長すぎます」
        'formElement.InvokeMember("submit")          'これも「マーシャラの制約:文字列が長すぎます」
■No21397に返信(こど。さんの記事)
> これだとどうでしょう?
>
> AxWebBrowser1.Document.GetElementById("email").SetAttribute("value", "めあど@meado.com")
> AxWebBrowser1.Document.GetElementById("pass").SetAttribute("value", "ぱすわーど。")
>
> 'Microsoft HTML Object Libraryを参照追加しておいて、フォームエレメント型に一旦受けて処理。
> 'こうしないと「マーシャラの制約:文字列が長すぎます」でエラーになったので。
> Dim formElement As mshtml.HTMLFormElement = Me.AxWebBrowser1.Document.Forms("form_login")
> formElement.submit()
> 'Me.AxWebBrowser1.Document.Forms("form_login").submit() 'これも「マーシャラの制約:文字列が長すぎます」
> 'formElement.InvokeMember("submit") 'これも「マーシャラの制約:文字列が長すぎます」

こど様 ご返事ありがとうございます

早速 COMにあった'Microsoft HTML Object Libraryを参照に追加してテストしてみたのですが、

エラー 1 名前 'AXWebBrowser1' は宣言されていません。 C:\Users\Pro07\Desktop\オートフォーム 3 PRJ\AUT_LOGIN\Aut_Login005\Form1.vb 71 9 WindowsApplication1
のエラーがでますので、WebBrowser1としてTESTしても今度は


WebBrowser1.Document.GetElementById("email").SetAttribute("value", "自分のEメール"  のところで
オブジェクト参照がオブジェクト インスタンスに設定されていません。のエラーが出ます。

AxWebBrowser1 と WebBrowser1 の違いは何なんでしょうか?
よろしくお願いします。
しまった!
ごめんなさい、まず、上のはすべて忘れてください。
2.0からはCOMの方使わなくても「WebBrowser」コントロールが備わったんでしたね。忘れてました。

で、以下でどうでしょう。
     WebBrowser1.Document.GetElementById("email").SetAttribute("value", "めあど@・・・")
     WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "ぱすわ〜ど")
     WebBrowser1.Document.Forms("form_login").GetElementsByTagName("input").GetElementsByName("Submit")(0).InvokeMember("Click")

で、できると思います。
(こちらで試した限りでは、正常にログインできました。(もちろんメアド・パスワードはちゃんとしたの入れて。))
■No21401に返信(こど。さんの記事)
> しまった!
> ごめんなさい、まず、上のはすべて忘れてください。
> 2.0からはCOMの方使わなくても「WebBrowser」コントロールが備わったんでしたね。忘れてました。
>
> で、以下でどうでしょう。
> WebBrowser1.Document.GetElementById("email").SetAttribute("value", "めあど@・・・")
> WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "ぱすわ〜ど")
> WebBrowser1.Document.Forms("form_login").GetElementsByTagName("input").GetElementsByName("Submit")(0).InvokeMember("Click")
>
> で、できると思います。
> (こちらで試した限りでは、正常にログインできました。(もちろんメアド・パスワードはちゃんとしたの入れて。))


やったぁ〜〜〜〜 ありがとうございます!!

> こど様 ありがとうございます

いけました!

このような処理は初めてなもんで戸惑っていましたがやっと突破口が開けたようです。

'Microsoft HTML Object Libraryを参照追加はどこを探しても書いていなかったです。

後、再度管理者ページへ再ログインして目的のページへとまだまだ難関がありそうですがこの応用で挑戦してみます。
TESTまでして頂きありがとうございました。
厚く御礼申し上げます、今後ともよろしくお願いします。
■No21404に返信(ふろんさんの記事)
> ■No21401に返信(こど。さんの記事)
>>しまった!
>>ごめんなさい、まず、上のはすべて忘れてください。
>>2.0からはCOMの方使わなくても「WebBrowser」コントロールが備わったんでしたね。忘れてました。
>>
>>で、以下でどうでしょう。
>> WebBrowser1.Document.GetElementById("email").SetAttribute("value", "めあど@・・・")
>> WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "ぱすわ〜ど")
>> WebBrowser1.Document.Forms("form_login").GetElementsByTagName("input").GetElementsByName("Submit")(0).InvokeMember("Click")
>>
>>で、できると思います。
>>(こちらで試した限りでは、正常にログインできました。(もちろんメアド・パスワードはちゃんとしたの入れて。))
>
>
> やったぁ〜〜〜〜 ありがとうございます!!
>
>>こど様 ありがとうございます
>
> いけました!
>
> このような処理は初めてなもんで戸惑っていましたがやっと突破口が開けたようです。
>
> 'Microsoft HTML Object Libraryを参照追加はどこを探しても書いていなかったです。
>
> 後、再度管理者ページへ再ログインして目的のページへとまだまだ難関がありそうですがこの応用で挑戦してみます。
> TESTまでして頂きありがとうございました。
> 厚く御礼申し上げます、今後ともよろしくお願いします。

追記

少し見落としていました。
>2.0からはCOMの方使わなくても「WebBrowser」コントロールが備わったんでしたね。忘れてました。

と言うことは.NET2005からは'Microsoft HTML Object Libraryの参照不要ということですね!
それを削除してOKでした。

再度御礼申し上げて 取り敢えず 解決済みとさせていただきます
ありがとうございました。

>
■No21405に返信(ふろんさんの記事)
> ■No21404に返信(ふろんさんの記事)
>>■No21401に返信(こど。さんの記事)
> >>しまった!
> >>ごめんなさい、まず、上のはすべて忘れてください。
> >>2.0からはCOMの方使わなくても「WebBrowser」コントロールが備わったんでしたね。忘れてました。
> >>
> >>で、以下でどうでしょう。
> >> WebBrowser1.Document.GetElementById("email").SetAttribute("value", "めあど@・・・")
> >> WebBrowser1.Document.GetElementById("pass").SetAttribute("value", "ぱすわ〜ど")
> >> WebBrowser1.Document.Forms("form_login").GetElementsByTagName("input").GetElementsByName("Submit")(0).InvokeMember("Click")
> >>
> >>で、できると思います。
> >>(こちらで試した限りでは、正常にログインできました。(もちろんメアド・パスワードはちゃんとしたの入れて。))
>>
>>
>>やったぁ〜〜〜〜 ありがとうございます!!
>>
> >>こど様 ありがとうございます
>>
>>いけました!
>>
>>このような処理は初めてなもんで戸惑っていましたがやっと突破口が開けたようです。
>>
>>'Microsoft HTML Object Libraryを参照追加はどこを探しても書いていなかったです。
>>
>>後、再度管理者ページへ再ログインして目的のページへとまだまだ難関がありそうですがこの応用で挑戦してみます。
>>TESTまでして頂きありがとうございました。
>>厚く御礼申し上げます、今後ともよろしくお願いします。
>
> 追記
>
> 少し見落としていました。
> >2.0からはCOMの方使わなくても「WebBrowser」コントロールが備わったんでしたね。忘れてました。
>
> と言うことは.NET2005からは'Microsoft HTML Object Libraryの参照不要ということですね!
> それを削除してOKでした。
>
> 再度御礼申し上げて 取り敢えず 解決済みとさせていただきます
> ありがとうございました。
>
>>
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板