I'm holding off for a bit. I want to make sure my approach is rock solid.. D/
On Feb 17, 2010, at 1:02 AM, Igor Vaynberg wrote: > our wiki is here: http://cwiki.apache.org/WICKET register yourself an > account and you should be good to go. > > -igor > > On Tue, Feb 16, 2010 at 9:43 PM, Douglas Ferguson > <doug...@douglasferguson.us> wrote: >> Igor, >> >> I have a decent solution and could put together a wiki page, just need to >> know where/how.. >> >> here's what I've got. >> >> Click and Wait for wicket: >> >> protected void clickAndWait(String wicketPath, long timeOut){ >> String callbackScript = >> "if(!window.outstandingWicketCalls){" + >> " window.outstandingWicketCalls = 0;" + >> " var oldWicketGlobalPreCallHandler = >> window.wicketGlobalPreCallHandler;" + >> " var oldWicketGlobalPostCallHandler = >> window.wicketGlobalPostCallHandler;" + >> " window.wicketGlobalPreCallHandler = >> function() {" + >> " window.outstandingWicketCalls++; "+ >> " oldWicketGlobalPreCallHandler();" + >> " };" + >> " window.wicketGlobalPostCallHandler = function() >> {" + >> " oldWicketGlobalPostCallHandler();" + >> " window.outstandingWicketCalls--; "+ >> " };" + >> "}" + >> "window.write(window.outstandingWicketCalls);"; >> >> selenium.runScript(callbackScript); >> click(wicketPath); >> >> selenium.waitForCondition("selenium.browserbot.getCurrentWindow();window.outstandingWicketCalls===0", >> Duration.seconds(8).getMilliseconds() +""); >> } >> >> >> Deal with unstable wicket paths >> >> protected String getDOMLocator(String xpathTagName, String >> wicketPath, int index){ >> >> String regex = "_(\\d+|#)(_|$)"; >> Pattern repeaterWicketPathPatter = Pattern.compile(regex); >> Matcher matcher = >> repeaterWicketPathPatter.matcher(wicketPath); >> >> while(matcher.find()){ >> try{ >> if(index == -1){ >> index = >> Integer.parseInt(matcher.group(1)); >> } >> >> String xpathRegex = "_[0-9]+"; >> if("_".equals(matcher.group(2))){ >> xpathRegex = xpathRegex + "_"; >> } >> wicketPath = >> wicketPath.replace(matcher.group(), xpathRegex); >> }catch(NumberFormatException nfe){ >> fail("index is required for getDOMLocator, >> please pass it to the method or as the first numeric value in the wicketpath >> provide i.e. foo_bar_134_child_#_child2_#"); >> } >> } >> >> StringWriter domLocator = new StringWriter(); >> domLocator.append("dom="); >> >> if(index > 0){ >> domLocator.append("window.findElementByWicketPath('"); >> domLocator.append(wicketPath); >> domLocator.append("', "); >> domLocator.append(String.valueOf(index-1)); >> domLocator.append(");"); >> }else { >> domLocator.append("window.$('[wicketpath=\\'"); >> domLocator.append(wicketPath); >> domLocator.append("\\']').get(0);"); >> } >> return domLocator.toString(); >> } >> >> >> Douglas Ferguson >> >> mobile: 512.293.7279 >> office/fax: 512.462.0408 >> skype: stillrecording >> aim: DaAmericanRuse >> >> - >> >> http://www.linkedin.com/in/douglasferguson >> http://www.myspace.com/douglasferguson >> http://www.douglasferguson.us/ >> http://www.distilleryrecords.com/ >> http://www.stillrecording.com/ >> >> Join my mailing list: distilleryrecords-subscr...@yahoogroups.com >> ________________________________________ >> From: Igor Vaynberg [igor.vaynb...@gmail.com] >> Sent: Tuesday, February 16, 2010 11:11 AM >> To: users@wicket.apache.org >> Subject: Re: Selenium Testing - Ajax Loads >> >> how would you do that exactly? >> >> -igor >> >> On Tue, Feb 16, 2010 at 7:26 AM, Douglas Ferguson >> <doug...@douglasferguson.us> wrote: >>> >>>> the path in repeaters is never stable, it depends on a lot of factors >>>> and is hard to predict. i think what may be a good way to deal with it >>>> is to use an IComponentInstantiationListener to add a behavior to Item >>>> subclasses to output their index in some attribute. install this >>>> listener only during test time or simply make it output nothing if not >>>> during the test. >>>> >>> >>> Interesting.... I'll look into it.. >>> Is there really any reason why not to just always have the listener there. >>> Seems like there would be little overhead in doing this... >>> >>> But I am curious, if this can be done then why couldn't the wicket page >>> also be made stable using the same technique? >>> >>>>>>> 2) I have issues with timing which is typical, and most people call >>>>>>> "waitForPageToLoad" which works fine for normal http requests, but if >>>>>>> It is an ajax request I'm waiting for, then I have to implement a >>>>>>> waitForContition. Is there a wicket convention I could use here? i.e. >>>>>>> how can I know that a wicket ajax call has completed? >>>>>> >>>>>> there are global ajax callbacks that are invoked when an ajax request >>>>>> completes. you can search this list for what they are. i imagine you >>>>>> can write a bit of javascript to hook into those and implement >>>>>> waitForCondition. >>>>> >>>>> I'm actually using the window.wicketGlobalPreCallHandler and >>>>> window.wicketGlobalPostCallHandler in my code already. >>>>> Do you think it would be safe to use those? I.E. preHander sets a boolean >>>>> "isWaitingOnAjax" and postHander unsets it? >>>>> >>>>> Then I can do a waitForConition(!isWaitingOnAjax) >>>> >>>> yeah, that sounds like a good starting point. >>>> >>>> -igor >>>> >>>>> >>>>>> >>>>>> when you get all this working maybe you can create a wiki page about >>>>>> it to help users who will have the same questions in the future. >>>>> >>>>> Sounds good... >>>>> >>>>>> >>>>>> -igor >>>>>> >>>>>> >>>>>>> >>>>>>> Thanks, >>>>>>> >>>>>>> D/ >>>>>>> --------------------------------------------------------------------- >>>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>>> >>>>>>> >>>>>> >>>>>> --------------------------------------------------------------------- >>>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>>> >>>>> >>>>> >>>>> --------------------------------------------------------------------- >>>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>>> >>>>> >>>> >>>> --------------------------------------------------------------------- >>>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>>> For additional commands, e-mail: users-h...@wicket.apache.org >>>> >>> >>> >>> --------------------------------------------------------------------- >>> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >>> For additional commands, e-mail: users-h...@wicket.apache.org >>> >>> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> >> --------------------------------------------------------------------- >> To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org >> For additional commands, e-mail: users-h...@wicket.apache.org >> >> > > --------------------------------------------------------------------- > To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org > For additional commands, e-mail: users-h...@wicket.apache.org > --------------------------------------------------------------------- To unsubscribe, e-mail: users-unsubscr...@wicket.apache.org For additional commands, e-mail: users-h...@wicket.apache.org