[ruby-list:49955] Re: [質問] RubyからIE操作 ie.Document.All.???.click

From: <yamataka@...08.itscom.net>
Date: 2014-09-05 09:43:16 UTC
List: ruby-list #49955
> 助田です。

山口です。
 
> On Wed, Sep 03, 2014 at 09:51:41AM +0900, yamataka@u08.itscom.net 
wrote:

[...]

> うーん。
> メールだけだとページの遷移や遷移後の表示がどうなっているのか
> よくわからないので、はっきりしませんが...

ご教示、大変感謝しております。
 
> そもそも、<frame src=...>が存在しないのに
> 
>   target_frame = frame_collection.item(0)
> 
> がエラーにならないのはおかしいと思います。
> 
> 私の表現がわかりにくかったので申し訳ないですが、
> 見ているHTMLソースが違うのではないかと思います。
> 
> frameの中のHTMLソースではなくてframeの親のHTMLのソースの中で
> 
>   <frame src=...>
> 
> がありませんか?
> 
>   # "勤務 login" ボタンを押し、勤務管理画面に遷移 (1)
>   ie.Document.All.b_kinmu_login.click
>   sleep(1) until ie.ReadyState == 4
> 
>   # 画面遷移後に URL を出力
>   # => "http://www.case.foo.co.jp/" 
>   print ie.document.url + "\n" 
> 
>   # 画面遷移後のHTMLのソースを出力
>   # all(0)で何も表示されなければ、all(1).outrHTMLを試す。
>   puts ie.document.all(0).outerHTML
> 
> と実行したときに出力結果の中に <frame src=...>というのがありませんか?

puts ie.document.all(0).outerHTML
all(0)だと、HTMLソースが表示されなかったので、all(1)に変更し、HTMLソース
が表示されるのを確認しました。
この、HTMLソースは、

> frameの中のHTMLソースではなくてframeの親のHTMLのソースの中で

で、指導いただいように、frameのHTMLソースではなく、
# 指定URLを表示
ie.navigate URL
で指定した、URLのHTMLソースが表示されました。

>   <frame src=...>
> 
> がありませんか?

$ script.rp > tako
$ grep -i frame tako
すると、
<TD class=small-font align=left><!--▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼▼
▼▼▼▼▼▼▼▼▼▼▼▼▼▼-->
<!--▼ 勤務アナウンス開始 -->
<IFRAME style="WIDTH: 717px; HEIGHT: 1px" height=4 marginHeight=0 src="
CnMsg1_Announce.html" frameBorder=0 width=680 name=CnMsg1 marginWidth=0 
scrolling=no></IFRAME>
...

の様に、IFRAMEが、複数存在するのですが、FRAME は存在しませんでした。
また、この IFRAME ... src="CnMsg1_Announce.html" は、該当ページに遷移す
る html ではないのです。

ちなみに、srcで、検索すると

...
<FORM method=get name=KinmuLogin action=https://kinmu.case.foo.co.jp/cndb02/WPSL_LOGON.P_LogonUser><A
 href="javascript:Submit('KinmuLogin');"><IMG onmouseover="MM_swapImage
('b_kinmu_login','','images/button/b_kinmu_login_mo.gif',1)" title="Case
/ログイン" onmouseout=MM_swapImgRestore() border=0 name=b_kinmu_login 
src="images/button/b_kinmu_login.gif"></A> </FORM></TD>
...
な感じで、
action=https://kinmu.case.foo.co.jp/cndb02/WPSL_LOGON.P_LogonUser><A 
href="javascript:Submit('KinmuLogin');"
で、次のページに遷移する部分が記述されています。

手がかりになるか分からないですが、
手順としては、

http://www.case.foo.co.jp/ で、勤務ログインボタン押下

(*)社内共用認証画面に遷移 
(*) https://www11.scas.foo.co.jp/SSO/Login?AccessID=gCB.....&Lang=ja で
User IDとPass Wordを入力
* に関しては、質問を簡単にするため、IEを他にも立ち上げ、そちらで認証を済
ませているので、この画面には遷移しません

勤務画面に遷移
https://kinmu.case.foo.co.jp/cndb03/WPSM_Menu.P_MainFrame 勤務画面の左フ
レームの勤務一覧を押す

という流れなのですが...

何か手がかりがあれば、是非ご教示いただけると幸いです。



In This Thread