Grrr... maybe i'm blind.
The code you posted covers exactly what i described.
I'm gonna add it in, cause i wonna try it asap. I'll just change
 Selenium.prototype.setTimeout to function(waitFunction, timeout) { .. }
so that timeout can be optional (but with a default value of 10sec)

Apart from doWaitUntilVisible and doWaitForCondition, i still want
to have doWaitUntilTextPresent and such variations.


>From [EMAIL PROTECTED]:

> That's something I've always wanted to add, but never got the time...
> 
> My idea is an extension of this - it combines polling and assertions
> in a single command, but it also has a maxWait duration, after which the
> assertion would fail. The maxWait could be defined in user-extensions.js, 
> since you cannot pass many params from the tests.
> 
> We would then have:
> pause '2000', assertTextPresent 'Value:1' -> waitAndAssertTextPresent
> 'Value:1'
> pause '2000', verifyVisible 'autoId' -> waitAndAssertVisible 'autoId'
> 
> Another idea is to replace pause '2000' with a new waitForAjaxResponse
> that:
> - Adds a boolean responseArrived=false;
> - Intercepts tacos.responseComplete to add code that makes
> responseArrived=true
> - Calls Selenium's doWaitForCondition('responseArrived==true')
> 
> I like this last solution. I would just use a custom doWaitForCondition
> that also has the maxWait logic.
> 
> 
> 
> From Leonardo Quijano Vincenzi <[EMAIL PROTECTED]>:
> 
> > I'm using some test extensions for Selenium in user-extensions.js to 
> > wait for an ajax request return, like these:
> > 
> > Selenium.prototype.setTimeout = function(timeout, waitFunction) {
> >     if (isNaN(timeout)) {
> >       throw new SeleniumError("Timeout is not a number: " + timeout);
> >     }
> > 
> >     testLoop.waitForCondition = waitFunction;
> >     testLoop.waitForConditionStart = new Date().getTime();
> >     testLoop.waitForConditionTimeout = timeout;
> >     testLoop.pollUntilConditionIsTrue = function() {
> >       try {
> >         if (this.waitForCondition()) {
> >           this.waitForCondition = null;
> >           this.waitForConditionStart = null;
> >           this.waitForConditionTimeout = null;
> >           this.continueCommandExecutionWithDelay();
> >         }
> >         else {
> >           if (this.waitForConditionTimeout != null) {
> >             var now = new Date();
> >             if ((now - this.waitForConditionStart) > 
> > this.waitForConditionTimeout) {
> >               throw new SeleniumError("Timed out after " + 
> > this.waitForConditionTimeout + "ms");
> >             }
> >           }
> >           window.setTimeout("testLoop.pollUntilConditionIsTrue()", 10);
> >         }
> >       }
> >       catch (e) {
> >         var lastResult = new CommandResult();
> >         lastResult.failed = true;
> >         lastResult.failureMessage = e.message;
> >         this.commandComplete(lastResult);
> >         this.testComplete();
> >       }
> >     };
> > };
> > 
> > Selenium.prototype.doWaitUntilVisible = function(locator, timeout) {
> >     var p = this.page();
> >     var f = function () {
> >         try {
> >             var element = p.findElement(locator);
> >             return true;
> >         }
> >         catch (e) {
> >             return false;
> >         }
> >     };
> > 
> >     Selenium.prototype.setTimeout(timeout, f);
> > };
> > 
> > Selenium.prototype.doWaitForCondition = function(script, timeout) {
> >     var f = function () {
> >         return eval(script);
> >     };
> >     Selenium.prototype.setTimeout(timeout, f);
> > };
> > 
> > 
> > Right now, the "waitUntilVisible" Selenium action works great. It can be 
> > used after an AjaxSubmit click to wait for a new component to appear on 
> > the page.
> > The problem is, that only works for components that *appear* as new in 
> > the page. Is there any dojo "flag" I could use  as a return condition 
> > instead of:
> > 
> >         try {
> >             var element = p.findElement(locator);
> >             return true;
> >         }
> >         catch (e) {
> >             return false;
> >         }
> > 
> > ??
> > 
> > Or maybe a tacos flag ? I'm looking for something that is true during 
> > the ajax request, but is false immediately after.
> > 
> > -- 
> > Ing. Leonardo Quijano Vincenzi
> > DTQ Software
> > Web Application Design and Programming
> > http://www.dtqsoftware.com
> > 
> > 
> > 
> > 
> > -------------------------------------------------------
> > This SF.Net email is sponsored by xPML, a groundbreaking scripting
> language
> > that extends applications into web and mobile media. Attend the live
> webcast
> > and join the prime developer group breaking into this new coding
> territory!
> > http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
> > _______________________________________________
> > Tacos-devel mailing list
> > [email protected]
> > https://lists.sourceforge.net/lists/listinfo/tacos-devel
> > 
> 
> 
> -- 
> 
> 
> 
> 
> -------------------------------------------------------
> This SF.Net email is sponsored by xPML, a groundbreaking scripting language
> that extends applications into web and mobile media. Attend the live webcast
> and join the prime developer group breaking into this new coding territory!
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
> _______________________________________________
> Tacos-devel mailing list
> [email protected]
> https://lists.sourceforge.net/lists/listinfo/tacos-devel
> 


-- 




-------------------------------------------------------
This SF.Net email is sponsored by xPML, a groundbreaking scripting language
that extends applications into web and mobile media. Attend the live webcast
and join the prime developer group breaking into this new coding territory!
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=110944&bid=241720&dat=121642
_______________________________________________
Tacos-devel mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/tacos-devel

Reply via email to