2011年10月26日

[ruby-list:48496] IE9/Windows7(64bit)だとformをsubmitできない

はじめまして。株式会社マイレージテクノの大縄と申します。

今回、IEをバッチ処理起動して結果を取得する必要があり、rubyから
Win32OLE をつかってCOMでIEを操作しようと思い、かなり以前の
るびまを参照しながら試していたのですが、どうもWindows7(64bit)の
IE9で、ieのCOMオブジェクト経由で取得したformのsubmitやinputの
click が効かないようなのです。

同じスクリプトをwindowsXP (32bit) IE8で試したところ、問題なく
動きsubmitすることができました。

また、同等の動きをwsh を作成してみたところ、IE9・Win7でも動いて
くれました。

今回、本番環境がWinXPなので、とりあえず困っているわけでは
ないのですが、wshできちんと動いたということは、おそらくruby 側の
問題なのかもしれないということで、メールを送らせていただきます。

よろしくお願いいたします。

>ruby -v
ruby 1.9.2p290 (2011-07-09 revision 32553) [i386-mswin32_100]

【うまくいかないスクリプト(1):yahoo.rb】

require 'win32ole'

ie = WIN32OLE.new('InternetExplorer.Application')
ie.Navigate("http://www.yahoo.co.jp/")
ie.Visible = true
while ie.busy
sleep 1
end

ie.Document.all("p").value="ruby"
sleep 1

ie.Document.getElementById("srchbtn").click


【うまくいかないスクリプト(2):yahoo_form.rb】

require 'win32ole'

ie = WIN32OLE.new('InternetExplorer.Application')
ie.Navigate("http://www.yahoo.co.jp/")
ie.Visible = true
while ie.busy
sleep 1
end

ie.Document.all("p").value="ruby"
sleep 1

ie.Document.forms.item(0).submit

【うまくいくスクリプト(1):yahoo.vbs】

Dim ie
Set ie = WScript.CreateObject("InternetExplorer.Application","ie_")

ie.Navigate("http://www.yahoo.co.jp/")
ie.Visible = True

While ie.ReadyState <> 4
WScript.Sleep(1000)
Wend

ie.Document.all("p").value="ruby"
WScript.Sleep 1000

ie.Document.getElementById("srchbtn").Click

【うまくいくスクリプト(2):yahoo_form.vbs】

Dim ie
Set ie = WScript.CreateObject("InternetExplorer.Application","ie_")

ie.Navigate("http://www.yahoo.co.jp/")
ie.Visible = True

While ie.ReadyState <> 4
WScript.Sleep(1000)
Wend

ie.Document.all("p").value="ruby"
WScript.Sleep 1000

ie.Document.forms.item(0).submit


--
━━━━━━━━━━━━━━━━━━
?株式会社 マイレージテクノ
?? http://www.mileage-techno.com
?大縄 亮
?? onawa@xxxxx
━━━━━━━━━━━━━━━━━━

投稿者 xml-rpc : 2011年10月26日 01:39
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/107047
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。