[ruby-list:49971] Re: [質問] RubyからIE操作 ie.Document.All.???.click
From:
<yamataka@...08.itscom.net>
Date:
2014-09-16 10:15:42 UTC
List:
ruby-list #49971
> 助田です。
山口です。
> 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 <Unknown>
アクセスが拒否されました。
HRESULT error code:0x80020009
Exception occurred.
from ./kinmuweb.rb:107:in `<main>'
やはり、勤務一覧の画面に遷移はしているのですが、同じように
エラーになってしまいます。
以下、該当部分のソースです。
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
何か、他にも要因がありそうです。