We've also had a need to start up multiple instances of IE, each in their own process. (This allows us to run multiple scraping sessions to the same site and not have the session cookies over-ride each other, as long as the cookies don't have an expiration date which writes them to the file system.)
Try this function in your app to start up each IE in it's own process: # This function starts each window as a unique IE process. # This allows the session cookies set for each IE scrape and # not overwrite session cookies set in other scraper sessions. def start_ie tf = Tempfile.new("scraper") basename = tf.path.sub(/^.*[\/\\]([^\/\\]*$)/, '\1') # get base filename html = sprintf("<html><head><title>%s</title></head></html>", basename) tf.puts(html) tf.close system("start iexplore #{tf.path}") ie = nil Watir::until_with_timeout(5) do begin ie = Watir::IE.attach(:url, /#{basename}/) rescue Watir::Exception::NoMatchingWindowFoundException false end end return ie end This does bring up a problem that we've had, however. If you try to start each IE as a different user then this method doesn't work, and click_no_wait doesn't work either. Apparently a process spawned from that IE running as a different user doesn't have the same permissions as a process running under as the logged in user. The call to find a window using Windows "Shell.Application" cannot see *any* IE windows if the spawning process is running as a different user. In addition, the logged in user cannot see any IE window created by another user. We haven't come up with a solution for this problem as it appears to be a problem in User32.dll used by Shell.Application. David Bret Pettichord wrote: > Lonny Eachus wrote: > >> Wow. Seems like an awful lot of work. Why not just use shell to start >> IE as any user you want using the Windows "RunAs" command, then attach >> to the window? >> Two short lines of code. >> > In my case i needed to start up several browsers concurrently and in > this scenario, the only way to attach to them reliably and cleanly is to > know the process id of each browser. I stole most of the code from Alex > Verk, so it wasn't really a lot of coding on my part. > > If you know of an easier way ("Two short lines of code") to help Marco, > i'm sure he and others would appreciate seeing it. > > Bret > > _______________________________________________ > Wtr-general mailing list > Wtr-general@rubyforge.org > http://rubyforge.org/mailman/listinfo/wtr-general > _______________________________________________ Wtr-general mailing list Wtr-general@rubyforge.org http://rubyforge.org/mailman/listinfo/wtr-general