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

From: <yamataka@...08.itscom.net>
Date: 2014-09-17 07:10:55 UTC
List: ruby-list #49973
山口です。
 
> 助田です。

ご教示、ありがとうございます。

> On Tue, Sep 16, 2014 at 07:15:42PM +0900, yamataka@u08.itscom.net 
wrote:
> > 
> > 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>'
> > 
> > やはり、勤務一覧の画面に遷移はしているのですが、同じように
> > エラーになってしまいます。
> 
> うーん。 
> 念のため、Laptopと同じバージョンのRubyにすることはできますか?

# 以降のtarget_frame.document実行時、error出ず、正常に実行される 
# laptop  ruby ver 1.9.3p327 OK
#              ver 1.9.3p545 OK
#              ver 2.0.0p481 OK

# 以降のtarget_frame.document実行時 :in `method_missing': (in OLE method 
`document': ) (WIN32OLERuntimeError)
# desktop ruby ver 1.8.7p370 NG
#              ver 1.9.3p545 NG
#              ver 2.0.0p481 NG

の様に、desktopは、ことごとくダメでした。

> それでも駄目だとすると残念ながらDesktopのPC固有の環境の問題で、
> Rubyやスクリプトのバグではないのだと思います。

スクリプトは、問題なさそうだという事が分かりましたので、満足です。

最初に記述していたのは、
sleep(1) until ie.ReadyState == 4
で、ie.Busy を確認していなかったので、画面は遷移しているが、
Ruby スクリプトの ie 操作が、受付可能で無かったのに、操作していて
エラーになったのが、一番の原因でした。

sleep(1) until ie.Busy == false && ie.ReadyState == 4

に、書き換え、助田さんのご教示で、後の操作もできるようになり、
コードの記述も理解できました。

> 気になることで思いつくのは、
> 
> > yama@roswell:~/bin$ ./kinmuweb.rb
> 
> このとき動作しているRuby は確かに、 2.0.0p481なんですよね?
> 
> あとは、IEのキャッシュに何かが残っていて想定したように
> 読み込めていないとか...。
> Desktop と Laptop のIE などの環境の設定に違いがないか
> 比較するとか、確認するしかないような気がします。
> 
> 正直、これ以上は私にもわからないです。

今まで、ご教示いただき、本当にありがとうございました。



In This Thread

Prev Next