Thanks, Paul. I think, though, that my main problem is the field is hidden, and I can't figure out the Watir syntax to force a hidden input field. -- Lisa
On Thu, May 26, 2011 at 9:51 AM, Paul Rogers <paul.rog...@shaw.ca> wrote: > I have some code that I wrote about 3 years ago that does this. Ive > put it here, but Im not sure it would be much use as it is because of > the version of watir it was written against, and looking through it > appears to be IE only. Im afraid I dont have time to help out with it, > but if you can make something useful out of it, please do. > > Hope it helps, > > Paul > > > > > class EventInfo > > # see http://msdn2.microsoft.com/en-us/library/ms533544(VS.85).aspx > LEFT_MOUSE = 1 > RIGHT_MOUSE = 2 > NO_MOUSE = 0 > > attr_accessor :clientX > attr_accessor :clientY > attr_accessor :screenX > attr_accessor :screenY > attr_accessor :x > attr_accessor :y > attr_accessor :expando > attr_accessor :ctrl_key > attr_accessor :shift_key > attr_accessor :alt_key > attr_accessor :mouse_button > attr_accessor :key_code > > > # these 2 are used to supply the id tags for events that start on > different objects > # ie we may fire the event on the document object, but we want > tthe src and target objects to be, for example divs > attr_accessor :target_element_id > attr_accessor :src_element_id > > > end > > > class Element > # Executes a user defined "fireEvent" for objects with JavaScript > events tied to them such as DHTML menus. > # usage: allows a generic way to fire javascript events on page > objects such as "onMouseOver", "onClick", etc. > # raises: UnknownObjectException if the object is not found > # ObjectDisabledException if the object is currently disabled > def fire_event(event , extra_info=nil ) > #assert_enabled > > #highlight(:set) > temp_id = nil > if extra_info > if self.id.nil? or self.id=="" > temp_id = "WatirTempID_" + Time.now.to_i.to_s > self.ole_object["id"]=temp_id > end > > fire_event_with_extras( event , extra_info ) > > else > self.locate > self.ole_object.fireEvent(event) > end > @container.wait > #highlight(:clear) > end > > def fire_event_with_extras( event , extra_info ) > raise "Cant use event info unless target elment has an id" if > self.id.nil? or self.id=="" > > src_element_string = "target" > src_element_string = > "document.getElementById('#{extra_info.src_element_id}')" if > extra_info.src_element_id > > #puts "src_element_string = " > #puts src_element_string > #puts "--" > > js=<<-end_js > e=document.createEventObject() > // these seem to be ignored, and clientX and clientY > values get used in their place > e.x =#{extra_info.x || 0}; > e.y=#{extra_info.y || 0}; > > > e.clientX = #{extra_info.clientX || 0 }; > e.clientY = #{extra_info.clientY || 0 }; > > e.screenX = #{extra_info.screenX || 0 }; > e.screenY = #{extra_info.screenY || 0 }; > > > e.expando="#{extra_info.expando}"; > > e.ctrlKey=#{extra_info.ctrl_key || false }; > e.altKey=#{extra_info.alt_key || false }; > e.shiftKey=#{extra_info.shift_key || false}; > > e.button=#{extra_info.mouse_button || 0 }; > e.keyCode=#{extra_info.key_code || 0 }; > > target= document.getElementById('#{self.id}'); > e.srcElement = target; > e.fromElement = target; > e.toElement = target; > //e.relatedTarget = target; > e.target = target; > > //alert( "before: " + e.clientX + " " + e.clientY + " " > + e.srcElement + " " + e.fromElement + " " + e.toElement ); > target.fireEvent('#{event}' , e ); > //alert( "after: " + e.relatedTarget + e.clientX + " " + > e.clientY + " " + e.srcElement + " " + e.fromElement + " " + > e.toElement ); > > end_js > #puts js > ole_object.ownerDocument.parentWindow.execScript( js ) > > end > private :fire_event_with_extras > end > > > > > On Thu, May 26, 2011 at 1:44 AM, Chuck van der Linden <sqa...@gmail.com> > wrote: > > I'd wager it's working off keypress events. Problem is we can't > > easily fire those in watir because the .fire_event method only takes a > > single parameter (the event) and I believe to work properly keypress > > needs a parameter for the value of the key that was depressed. > > > > You might need to write your own function that executes the javascript > > fireevent function instead, similar to this item from Stackoverflow a > > year or two ago > http://stackoverflow.com/questions/602069/autocomplete-dropdown-test-with-ruby-watir > > > > Another alternative is described here > > http://zbarzone.blogspot.com/2008/08/watir-sendkeys-and-javascript.html > > and that approach might actually be better for you. > > > > To fix this 'for real' it seems we'd need to first modify .fire_event > > to allow for a second parameter, or create a new method such > > as .fire_key_event that would take two parameters. Then any other > > methods that have keypress events in them such as .set would need to > > be altered to fire the down/press/up events character by character and > > fire those events with the proper 'key' values for each character. > > > > On May 24, 11:24 am, Lisa Crispin <lisa.cris...@gmail.com> wrote: > >> I tried the log events thing, it's nice to know about that, but I don't > see > >> anything that really looks like the JS firing. I see a lot of 'select', > >> 'click' 'keydown', 'input', 'keypress', 'keyup', none of that looks like > >> what the JS is doing with the type ahead. > >> -- LIsa > >> > >> On Mon, May 23, 2011 at 2:36 PM, Željko Filipin < > >> > >> > >> > >> > >> > >> > >> > >> > >> > >> zeljko.fili...@wa-research.ch> wrote: > >> > On Mon, May 23, 2011 at 9:44 PM, Lisa Crispin <lisa.cris...@gmail.com > > > >> > wrote: > >> > > We are changing what used to be regular drop-down select list boxes > to a > >> > dojo widget thingie that allows type ahead to select the item. > >> > >> > Is the page public? Or a similar page? Frameworks usually have > examples > >> > somewhere online. > >> > >> > If you think the only problem is that a JavaScript event is not fired > (by > >> > Watir), take a look at this: > >> > >> >http://stackoverflow.com/questions/3787555/how-to-find-out-which-java. > .. > >> > >> > If the site is not public, but you could show it to me, contact me off > >> > list. > >> > >> > Željko > >> > -- > >> > watir.com - community manager > >> > watir.com/book - author > >> > watirpodcast.com - host > >> > viaqa.mobi conference on software testing - organizer > >> > >> > -- > >> > Before posting, please readhttp://watir.com/support. In short: search > >> > before you ask, be nice. > >> > >> > watir-general@googlegroups.com > >> >http://groups.google.com/group/watir-general > >> > watir-general+unsubscr...@googlegroups.com > >> > >> -- > >> Lisa Crispin > >> Co-author with Janet Gregory, _Agile Testing: A Practical Guide for > Testers > >> and Agile Teams_ (Addison-Wesley 2009) > >> Contributor to _Beautiful Testing_ (O'Reilly 2009) > http://lisacrispin.com > >> @lisacrispin on Twitterhttp://entaggle.com/lisacrispin > > > > -- > > Before posting, please read http://watir.com/support. In short: search > before you ask, be nice. > > > > watir-general@googlegroups.com > > http://groups.google.com/group/watir-general > > watir-general+unsubscr...@googlegroups.com > > > > -- > Before posting, please read http://watir.com/support. In short: search > before you ask, be nice. > > watir-general@googlegroups.com > http://groups.google.com/group/watir-general > watir-general+unsubscr...@googlegroups.com<http://groups.google.com/group/watir-general%0awatir-general+unsubscr...@googlegroups.com> > -- Lisa Crispin Co-author with Janet Gregory, _Agile Testing: A Practical Guide for Testers and Agile Teams_ (Addison-Wesley 2009) Contributor to _Beautiful Testing_ (O'Reilly 2009) http://lisacrispin.com @lisacrispin on Twitter http://entaggle.com/lisacrispin -- Before posting, please read http://watir.com/support. In short: search before you ask, be nice. watir-general@googlegroups.com http://groups.google.com/group/watir-general watir-general+unsubscr...@googlegroups.com