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

From: MasakiSuketa <masaki.suketa@...>
Date: 2014-09-05 13:48:23 UTC
List: ruby-list #49956
助田です。

On Fri, Sep 05, 2014 at 06:43:16PM +0900, yamataka@u08.itscom.net wrote:
> $ 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 は存在しませんでした。

すみません。
試していないのでわかりませんが、IFRMAE も該当するみたいです。

> また、この IFRAME ... src="CnMsg1_Announce.html" は、該当ページに遷移す
> る html ではないのです。

複数あるIFRAMEの中で目的の左フレームがどれかわかりますか?
その中で、src= で指定している部分がないでしょうか?

> 手がかりになるか分からないですが、
> 手順としては、
> 
> http://www.case.foo.co.jp/ で、勤務ログインボタン押下

この部分は、script で勤務ログインボタンを押すことができて遷移できるんですよね?

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

勤務画面に遷移した後で
  print ie.document.url + "\n" 
と実行すると
 "http://www.case.foo.co.jp/..." 
と表示されるという理解で合っていますか?

で、その状態で

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

この勤務一覧リンクを押したいが、その前にスクリプトは
documentメソッドを実行したところでエラーになる
という理解で合っていますか?

このとき、左フレームの中身は
  www.case.foo.co.jp
か
  kinmu.case.foo.co.jp
のどちらから取得して表示しているのかわかりますか?

もし
  www.case.foo.co.jp
であれば、動作するスクリプトが書けそうな気がします。

ですが、
  kinmu.case.foo.co.jp
であれば、勤務一覧リンクは、違うドメインのコンテンツのため
スクリプトから動作させるのは無理だと思います。

frameのhrefは見れるのかな...?(独り言です。)

試していないので、動作しないかも知れませんが、
目的の左のフレームが何番目かわかれば

  # 1番目ならitem(0)、2番目ならitem(1)、...
  print ie.document.frames.item(0).location.href

というようにしてframeの中身のドメインがわかるかも知れません。

frameの中身のドメインがie.document.urlと同じなら
勤務一覧リンクをクリックするスクリプトが書けるかも知れませんが、
違う場合は、残念ながら、勤務一覧リンクにアクセスする前の documentメソッド
の段階でエラーになってしまいます。

  助田

In This Thread