Is this something you could share?

Bret

On Sep 28, 7:07 pm, Shane <hend...@gmail.com> wrote:
> Ah, well, it wasn't quite a problem of user rights in the end.
>
> It turns out that the method that Watir uses to enumerate IE windows
> (i.e. Shell.Application) does not work across user spaces.  So I had
> to write an intermediate application to retrieve the IWebBrowser2 COM
> pointer for the IE window, and modify the 'eval_in_spawned_process'
> Watir function to use this handle for 'pc = Watir::IE.bind
> (iWebBrowserPtr)'.
>
> This now works fine. :)
>
> On Sep 28, 12:34 pm, Bret Pettichord <bpettich...@gmail.com> wrote:
>
> > Shane,
>
> > Thanks for the excellent description of the problems that occur when
> > your tests run in an account that doesn't have the rights Watir needs.
>
> > Bret
>
> > On Sep 25, 11:54 am, Shane <hend...@gmail.com> wrote:
>
> > > Some Background on architecture of the app is needed:
>
> > > Windows 2003/Apache-v2.2/IE7/Watir-v1.6.2/Ruby-v1.8.5
>
> > >    1. Apache running under 'localsystem' account.
> > >    2. Request to run a Watir script comes in.
> > >    3. Apache CGI kicks off IE7 under a particular user, e.g. 'tester',
> > > and attaches the IE7 window to the "default" desktop environment. This
> > > allows us to VNC into the machine and see all IE7 windows from all the
> > > accounts running.
> > >    4. IE7 has ruby embedded into the process through plugin and
> > > executes the ruby script in a thread.
>
> > > For clicking on links/buttons in IE, Watir supplies a synchronous
> > > 'click' method and async 'click_no_wait' method. 'click_no_wait'
> > > spawns a completely new ruby process to connect back to the IE7 window
> > > to click the link/button.
>
> > > This is what is failing for me. Since click_no_wait is spawning a new
> > > process. It cannot seem to see the IE7 window to connect to it and
> > > click on the link/button. I have to use 'click_no_wait' due to a
> > > dialog box that IE pops up on a certain page, so that another ruby
> > > thread can close it.
>
> > > I've tried a few things:
> > > - using fire_event('OnClick') instead of click_no_wait hangs script
> > > like 'click' would.
> > > - Modifying 'click' by commenting out '....@container.wait', but the
> > > 'click!' itself is the API that hangs waiting for the dialog box to
> > > close.
> > > - Make 'click_no_wait' spawn a new thread instead of a process', but
> > > other threads appear to be suspended while the 'click!' call executes
> > > in that thread. Which is strange.
> > > - Executing the 'click_no_wait' process using the exact same code that
> > > is used to spawn the IE7 process, but it still can't find any IE7
> > > windows.
>
> > > By 'default' desktop described above, the code that spawns IE
> > > basically does a series of C++ calls to attach the IE7 window to the
> > > 'winsta0' desktop:
>
> > > - LogonUser() // log in as tester account
> > > - OpenWindowStation("winsta0") // to get default desktop
> > > - SetProcessWindowStation()
> > > - // add the user to interactive window station using
> > > (GetUserObjectSecurity, GetSecurityDescriptorDacl, GetAclInformation,
> > > AddAce, SetSecurityDescriptorDacl, SetUserObjectSecurity)
> > > - // add user to "default" desktop using APIs listed above.
> > > - CreateEnvironmentBlock
> > > - ImpersonateLoggedOnUser
> > > - CreateProcessAsUser('iexplore.exe')
> > > - // cleanup
>
> > > Running the following Watir script under the particular user IE7 is
> > > running under yields:
>
> > > $IE = Watir::IE.attach(:title, /Google/)
> > > $IE.button(:name, 'btnG').click!
>
> > >     c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/ie-class.rb:
> > > 246:in `method_missing': Windows (WIN32OLERuntimeError) OLE error code:
> > > 80040154 in HRESULT error code:0x80020009 Exception occurred. from c:/
> > > ruby/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/ie-class.rb:246:in
> > > "each"
>
> > > Which contains:
>
> > > c:/ruby/lib/ruby/gems/1.8/gems/watir-1.6.2/lib/watir/ie-class.rb:246
> > > shell = WIN32OLE.new("Shell.Application")
> > > windows = shell.Windows   ## Fails here
>
> > > Let me know if I can supply more details or disambiguation! :)
>
> > > Thanks, Shane.
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups 
"Watir General" group.
To post to this group, send email to watir-general@googlegroups.com
Before posting, please read the following guidelines: 
http://wiki.openqa.org/display/WTR/Support
To unsubscribe from this group, send email to 
watir-general-unsubscr...@googlegroups.com
For more options, visit this group at 
http://groups.google.com/group/watir-general
-~----------~----~----~----~------~----~------~--~---

Reply via email to