From: yamataka@...08.itscom.net Date: 2014-09-16T19:15:42+09:00 Subject: [ruby-list:49971] Re: [質問] RubyからIE操作 ie.Document.All.???.click > 助田です。 山口です。 > On Fri, Sep 12, 2014 at 05:08:29PM +0900, yamataka@u08.itscom.net wrote: > > 今、エラーが起きているのは、デスクトップPCで、ほぼ同じ環境のラップト ップ > > で > > 同じスクリプトを走らせたところ、ラップトップでは、正しく動作しました。 > > なぜか、よく分かりません。 > > おおっ。何はともあれ動作して良かったです。 助田さんのおかげです。 本当に、ありがとうございました。 ですが... > > i686 Cygwin > > > > Ruby > > desktop ver 1.8.7 (2012-06-29 patchlevel 370) [i386-cygwin] > > laptop ver 1.9.3p327 (2012-11-10 reviseion 37606) > > > > 大きな違いは、Rubyのversionが、desktopは、1.8 laptopは、1.9 です。 > > > > ソース中の、target_frame.document で、Ruby ver 1.8 では、エラーにな るの > > が???です。 > > 1.8.7 (Win32OLE) 独自のバグなのかも知れませんが、もうサポートが終了し ています。 > Ruby をバージョンアップされることをおすすめします。 > さすがにこれ以上の追求は厳しいです。 > > Cygwinの最新パッケージに同梱されているRuby もこの前、2.0.0 > にバージョンアップされています。 desktopのrubyのversionを2 にあげたのですが、 yama@roswell:~/bin$ ruby --version ruby 2.0.0p481 (2014-05-08) [i386-cygwin] yama@roswell:~/bin$ ./kinmuweb.rb url :https://www11.scas.foo.co.jp/SSO/Login?AccessID=NrT7LZEAz0m27DFA8XluwR1P&Lang=ja title:共用認証 ./kinmuweb.rb:107:in `method_missing': (in OLE method `document': ) ( WIN32OLERuntimeError) OLE error code:80070005 in アクセスが拒否されました。 HRESULT error code:0x80020009 Exception occurred. from ./kinmuweb.rb:107:in `
' やはり、勤務一覧の画面に遷移はしているのですが、同じように エラーになってしまいます。 以下、該当部分のソースです。 sleep(1) until ie.Busy == false && ie.ReadyState == 4 # 勤務画面のフレームコレクションを取得 frame_collection = ie.document.frames # ie.document.all(0).outerHTML に、FRAME src="..." があるので、frame_ colection.item(0) を target_frame にする target_frame = frame_collection.item(0) # 勤務画面 左側のフレームのドキュメントを取得 # ruby ver 1.8.7p370 NG 8 target_frame.documentで、error: method_ missing: document (WIN32OLERunTimError) # ruby ver 1.9.3p327 OK # ruby ver 2.0.0p481 NG ./kinmuweb.rb:104:in `method_missing': (in OLE method `document': ) (WIN32OLERuntimeError) document = target_frame.document 何か、他にも要因がありそうです。