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

From: MasakiSuketa <masaki.suketa@...>
Date: 2014-09-01 10:32:50 UTC
List: ruby-list #49948
助田です。

On Mon, Sep 01, 2014 at 02:00:13PM +0900, yamataka@u08.itscom.net wrote:

> p target_frame.ole_methods 部分で、
> [item, length, frames, ... , document, ...]
> documentがole_methodsとして存在するのですが...
> 
> ./x.rb:34:in `method_missing': document (WIN32OLERuntimeError)
>     OLE error code:80070005 in <Unknown>
>       アクセスが拒否されました。
> 
>     HRESULT error code:0x80020009
>       例外が発生しました。
> 	from ./x.rb:34
> と、document が method として存在しないと
> 
> document = target_frame.document
> 部分で、エラーがでます。

メッセージが紛らわしくて申し訳ないのですが、 ole_methods で表示されるメソッドを
実行したときは、エラー時に `method_missing' は常に表示されます。
で、documentは実行されているのですが、IEが「アクセスが拒否されました。」
のエラーを返してきているように思えます。

本当にメソッドが存在しない場合には、unknown property or method
のようなメッセージを表示したと思います。

試した訳ではないので、確証はありませんが、遷移した先のドメインと
frameの中で表示しているドメインが違うということはありませんか?
違う場合に、仕様としてIEがアクセス拒否を返す動作をしたように
思います。 (私の勘違いだったらすみません。)

もしそうだとすれば、Win32OLEとしては正しい動作をしてエラーを表示
していることになり、残念ながら、Win32OLE側ではどうすることもできない
気がします。

  助田

In This Thread