[lnkForumImage]
TotalShareware - Download Free Software

Confronta i prezzi di migliaia di prodotti.
Asp Forum
 Home | Login | Register | Search 


 

Forums >

comp.lang.ruby

win32ole called from watir script

Max Russell

1/10/2008 2:01:00 PM

I've been using WATiR to test a website. At one point, a VBScript
dialogue is shown which needs a Yes No response.

I found that I can manually browse to the page, and then using the
win32ole library, send a yes value to the dialogue.

require 'win32ole'

wsh = WIN32OLE.new('WScript.shell')
wsh.AppActivate('INR Check')
wsh.SendKeys('y')


however, if I use similar code within the script itself, it doesn't seem
to execute?

I'm nt quite sure how to proceed with this..
--
Posted via http://www.ruby-....

2 Answers

Max Russell

1/11/2008 1:06:00 PM

0

Max Russell wrote:
> I've been using WATiR to test a website. At one point, a VBScript
> dialogue is shown which needs a Yes No response.
>
> I found that I can manually browse to the page, and then using the
> win32ole library, send a yes value to the dialogue.
>
> require 'win32ole'
>
> wsh = WIN32OLE.new('WScript.shell')
> wsh.AppActivate('INR Check')
> wsh.SendKeys('y')
>
>
> however, if I use similar code within the script itself, it doesn't seem
> to execute?
>
> I'm nt quite sure how to proceed with this..

One thing I've been wondering is whether I should spawn a new process or
thread in order to deal with this?
--
Posted via http://www.ruby-....

David Mullet

1/11/2008 1:43:00 PM

0

Max Russell wrote:
> Max Russell wrote:
>> I've been using WATiR to test a website. At one point, a VBScript
>> dialogue is shown which needs a Yes No response.
>>
>> I found that I can manually browse to the page, and then using the
>> win32ole library, send a yes value to the dialogue.
>>
>> require 'win32ole'
>>
>> wsh = WIN32OLE.new('WScript.shell')
>> wsh.AppActivate('INR Check')
>> wsh.SendKeys('y')
>>
>>
>> however, if I use similar code within the script itself, it doesn't seem
>> to execute?
>>
>> I'm nt quite sure how to proceed with this..
>
> One thing I've been wondering is whether I should spawn a new process or
> thread in order to deal with this?

I use similar code in some of my scripts:

sleep(1)
if ws.AppActivate("Security Alert")
ws.SendKeys "{ENTER}"
sleep(1)
end

It runs within the script's main thread, following the code that might
trigger the security alert dialog.

Note that WScript.Shell's AppActivate method returns true if it was able
to activate the window, and false otherwise. You can use this to
determine if the AppActivate method was successful before attempting the
SendKeys method. You may also need to toss in a momentary sleep to allow
the dialog to appear before calling AppActivate.

There may be a more elegant solution (loop with timeout, watir method,
etc.), but this is successful for me.

Hope that helps.

David

http://rubyonwindows.bl...

--
Posted via http://www.ruby-....