[ruby-list:49967] Re: [質問] RubyからIE操作 ie.Document.All.???.click
From:
MasakiSuketa <masaki.suketa@...>
Date:
2014-09-11 13:51:24 UTC
List:
ruby-list #49967
助田です。
On Thu, Sep 11, 2014 at 02:00:06PM +0900, yamataka@u08.itscom.net wrote:
> 助田さんのご推測どおり、
> url :https://kinmu.case.foo.co.jp/cndb03/WPSM_Menu.P_MainFrame
> なりました。
やはり、ブラウザで読み込みが終わる前に実行されていたようですので、
期待通りの動きになっていなかったようですね。
> > また、勤務画面に遷移した後で実行した
> > puts ie.document.all(0).outerHTML
> > (かまたは、puts ie.document.all(1).outerHTML)
> > の出力結果と
> > ブラウザのメニューからソースを表示したときの内容は
> > 同じになりますか?
>
> ie.document.all(0).outerHTML と ie.document.all(1).outerHTML 出力結果の
> 差異は、
いや。そうではなくて、ブラウザのURLと document.url
の結果が一致しないようで、訳がわからず、詳しい状況を知りたくて
ie.document.all(0).outerHTMLの結果
(スクリプトから取得できるHTMLの内容)
と
InternetExplorer のメニューバーの「表示」-「ソース」で表示した内容
(ブラウザが実際に表示しているHTMLの内容)
が同じなのかどうか確認してただきたかったんです。
> ブラウザは、勤務画面を表示しており、左フレームの勤務一覧のリンクが、ie.
> document.all(0).outerHTMLからは見えない状況です。
ちょっと話が遠回りになって申し訳ないですが、多分、見えなくて正解だと思いますよ。
frame というものをHTMLで記述する場合、どのように記述して、
ブラウザではどう表示されるのか理解されていますでしょうか?
その理解がないとちょっと厳しいかも知れませんね。
たとえばフレームを解説したページがあって
http://open.shonan.bunkyo.ac.jp/~ohtan/kouza/frame.html
ここの一番下のサンプル表示のリンク先のページ
http://open.shonan.bunkyo.ac.jp/~ohtan/kouza/frame-0.html
を例にとると
左フレームの「トップページ」のリンクの文字を表示するためには
ie = WIN32OLE.new("InternetExplorer.Application")
ie.visible = true
ie.navigate "http://open.shonan.bunkyo.ac.jp/~ohtan/kouza/frame-0.html"
sleep 3 # ここは適当です
# これでは[トップページ」のリンクの文字が表示されない。
# ここで表示されるのは、
# http://open.shonan.bunkyo.ac.jp/~ohtan/kouza/frame.html
# の1. フレームの基本形のHTML(と似たようなもの)。
# ここでは、左のframeが
# src="frame-mokuji.html"
# ということから frame-mokuji.html はドメインがページのURLと
# 同じであることがわかる。
#
puts ie.document.all(0).outerHTML
# frameのsrcがページのURLと同じドメインのため
# frameの中のdocumentの中のHTMLを表示すれば
# 「トップページ」のリンクが表示される。
# http://open.shonan.bunkyo.ac.jp/~ohtan/kouza/frame.html
# の3. フレームのサンプルの frame-mokuji.htmlの内容
# が表示される。
puts ie.document.frames.item(0).document.all(0).outerHTML
というようになります。「見えなくて正解」だと私が思っている
理由が伝わりますか?
> 以下、ソースと出力結果を付けますので、大変恐縮ですが、引き続きご教示いた
> だければ幸いです。
うーん。一見、正しそうに見えます...。
> url :https://kinmu.case.foo.co.jp/cndb03/WPSM_Menu.P_MainFrame
がページのURLで
左のframe の src が
> src="/cndb03/WPSM_Menu.P_Menu?szShimeinoCookie=00009107001864333973&
....
なので
https://kinmu.case.foo.co.jp/cndb03/WPSM_Menu.P_MainFrame?.....
でドメインが同じに見えます。
フレームの中とページのURLのドメインが違うからという理由でエラーになっている
訳ではなさそうです。
src="https://kinmu.case.bar.co.jp/cndb03/WPSM_Menu.P_Menu?....
とかになっているとドメインが違うという理由でアクセスエラーになります。
ただ、sleep は
> # 共用認証画面のログインボタンを押し、勤務一覧画面に遷移させる
の後にも入れた方がよい気がします。
InternetExplorerがframeの中身も含めて勤務一覧画面の読み込みを
完了してからでないと「勤務一覧」リンクにアクセスできない
でしょうから。
あとは、全くの当てずっぽうですが、認証が必要なので、スクリプトからだと
そもそもアクセスが拒否されてしまいエラーになってしまうとか...。
あまり、お役に立てなくて申し訳ないです。
助田