C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[4]: Yahooログイン後のパスワード変更を自動化するには?


(過去ログ 84 を表示中)

[トピック内 5 記事 (1 - 5 表示)]  << 0 >>

■49916 / inTopicNo.1)  Yahooログイン後のパスワード変更を自動化するには?
  
□投稿者/ tani (1回)-(2010/05/22(Sat) 09:39:15)

分類:[VB.NET/VB2005 以降] 

開発環境:WindowsVista Business、VisualStudio2005 Professional Edition

WebBrowserコントロールを用いて、Yahooで自動ログオンする機能を下記の通り作成しました。

WebBrowser.Document.All.GetElementsByName("login")(0).InnerText ="IDを入力"
WebBrowser.Document.All.GetElementsByName("passwd")(0).InnerText = "パスワードを入力"
WebBrowser.Document.Forms("login_form").InvokeMember("submit")

自動ログオンは無事にできたのですが、
しばらく使っていると、YahooIDのパスワード変更を求める画面が表示されることがあります。
このパスワード変更をボタン1つで簡単に変更できるようにしたいと思ってます。

下記のコードで、入力までは、問題なくできました。

WebBrowser.Document.All.GetElementsByName(".byear")(0).InnerText = "年を入力"
WebBrowser.Document.All.GetElementsByName(".bmon")(0).InnerText = "月を入力"
WebBrowser.Document.All.GetElementsByName(".bday")(0).InnerText = "日を入力"
WebBrowser.Document.All.GetElementsByName(".opw")(0).InnerText = "旧パスワードを入力"
WebBrowser.Document.All.GetElementsByName(".pw1")(0).InnerText = "新パスワードを入力"
WebBrowser.Document.All.GetElementsByName(".pw2")(0).InnerText = "新パスワードを再入力"


ですが、最後のsubmit(click)をさせる処理で、
下記の通り処理させましたが、なぜか弾かれてしまい、再入力画面に戻ります。

WebBrowser.Document.Forms("form01").InvokeMember("submit")


HTMLソースを見ると、Javascriptを使用しており、
Javascriptの処理の記述が抜けているため、弾かれているのではと推測しています。
ですが、VB2005上でどのようなコードを書いたらよいかわからず、
この3日間、ネットを探し回りましたが対応方法が見つかっていません。


HTMLのソースは下記の通りです。(必要と思われる箇所を抜粋します)

-----------------------------------------------------------------------------------------------
<form method="post" action="/config/jp_pw_update" name="form01">
・・・
<script type="text/javascript">
<!--
document.write('<input type="hidden" name="" value="" id="commit">');
document.write('<a href="javascript:setSubmitValue(\'submit2\');"><img src="https://s.yimg.jp/images/reg/01/subsidiary/btn_change_password.gif" id="save" alt="パスワードを変更"></a>');
// -->
</script>
・・・
</form>
-----------------------------------------------------------------------------------------------

ソースコードのサンプルがあれば助かるのですが、参考になる情報があればご教授お願い致します。


引用返信 編集キー/
■49917 / inTopicNo.2)  Re[1]: Yahooログイン後のパスワード変更を自動化するには?
□投稿者/ たか (44回)-(2010/05/22(Sat) 10:50:26)
> document.write('<a href="javascript:setSubmitValue(\'submit2\');"><img src="https://s.yimg.jp/images/reg/01/subsidiary/btn_change_password.gif" id="save" alt="パスワードを変更"></a>');

単純なサブミットではなくsetSubmitValueというJavaSCriptを呼び出すのがYahooのシステムが期待する正しい処理だからだと思います。おそらくsetSubmitValueの中でsubmit以外に必要な処理が実行されているのでしょう。

上のだと<a href="javascript:setSubmitValue(\'submit2\');">ってAタグになってますよね?
なのでこのリンクをクリックする、って処理を書いてやればいいかと・・・


ただJavaScriptからdocumet,writeされた部分へのアクセスって単純にできなくてはまったような気もします
(少し不確か)

その場合は直接JavaScriptをキックしてやる必要があるので
webBrowser.Navigate("setSubmitValue('submit2'); でOKだったと思います。
リンクをクリックするって処理の方がYahooの仕様変更があってもエラーになりにくいので
ベターですが・・・
引用返信 編集キー/
■49921 / inTopicNo.3)  Re[2]: Yahooログイン後のパスワード変更を自動化するには?
□投稿者/ tani (2回)-(2010/05/22(Sat) 13:44:32)
たかさん

早速のご回答ありがとうございます。

> その場合は直接JavaScriptをキックしてやる必要があるので
> webBrowser.Navigate("setSubmitValue('submit2'); でOKだったと思います。
> リンクをクリックするって処理の方がYahooの仕様変更があってもエラーになりにくいので

はい、この手法をとりたいと思います。
早速、下記で試してみましたが、「このプログラムではこの Web ページを表示できません」となります。

・webBrowser.Navigate("setSubmitValue('submit2');")

念のため、いくつか試しましたが、現象かわらずでした。

・WebBrowser.Navigate("setSubmitValue(\'submit2\');")
・webBrowser.Navigate("javascript:setSubmitValue(\'submit2\');")
・webBrowser.Navigate("setSubmitValue('submit2')")
・WebBrowser.Navigate("setSubmitValue(\'submit2\')")
・webBrowser.Navigate("javascript:setSubmitValue(\'submit2\')")

どこか、間違っているでしょうか?

引用返信 編集キー/
■49922 / inTopicNo.4)  Re[3]: Yahooログイン後のパスワード変更を自動化するには?
□投稿者/ たか (45回)-(2010/05/22(Sat) 15:43:43)
すみません。
webBrowser.Navigate("javascript:setSubmitValue('submit2');
でした(汗

引用返信 編集キー/
■49923 / inTopicNo.5)  Re[4]: Yahooログイン後のパスワード変更を自動化するには?
□投稿者/ tani (4回)-(2010/05/22(Sat) 17:59:18)
たかさん

下記、ありがとうございます。

> webBrowser.Navigate("javascript:setSubmitValue('submit2');
> でした(汗

早速、確認させていただいたところ、無事、処理させることができました。

 WebBrowser.Navigate("javascript:setSubmitValue('submit2');")


この3日間、さんざん調べて悩んでいたことが1日で解決するとは思いませんでした。
たかさんのレベルに少しでも近づけるよう精進したいと思います。
この度は、本当にありがとうございました。

解決済み
引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -