Perhaps something that would help determine why in our case the isElementPresent() can fail. In Firebug I can see the static element that should be present. I know the target I am searching for. I would assume there is still a mismatch then in the actual search matching the two - so viewing the runtime DOM should be perfect.
On Fri, Aug 14, 2009 at 11:51 AM, Jian Fang <[email protected]>wrote: > Anyway, I am going to add a diagnosis method to access the runtime dom for > the UI element or the whole UI module and also put back the logging > capability to the Engine so that it is easier for our users to debug/trace > problems. Will let you know when it is ready. > > Any suggestions on what information you want to see for the new diagnosis > method? > > Thanks, > > Jian > > > On Fri, Aug 14, 2009 at 1:00 AM, Jian Fang <[email protected]>wrote: > >> Hi, I tried to run your test, but could not go forward because I cannot >> pass the login piece and there are dependencies on other files. >> >> I looked at your code and like to share with you my observations: >> >> 1) Most UIs you defined are just one Container with another UI element you >> want to work on. This is really not a preferred way because it is similar to >> work on individual UI and you cannot exploit group information inside a set >> of UI elements. I see you put group attribute on these Containers, which >> does not make sense either because you only have one UI element. Group >> locating is only useful when you have multiple UI elements. >> >> 2) As for Ajax, the really power in Tellurium is to use UI template, for >> example, if you have >> Table or List object, you can define what the UI pattern looks like. In >> this way, Tellurium can handle dynamic Ajax response, for example, our >> Tellurium issue data grid is described using a Tellurium Table object. More >> details of UI templates on >> >> http://code.google.com/p/aost/wiki/UserGuide?tm=6#UI_Templates >> >> 3) The dump method just shows the locator (XPath or jQuery) Tellurium >> generates for your >> UI element, it does not indicate anything if the UI element is actually in >> the DOM or not at runtime. >> >> 4) The html is very complicated and I really don't have time to go through >> it fully. The possible reasons that the isElementPresent method returns >> false for a UI element could be that the UI element is not there indeed or >> the generated runtime xpath is not correct. For example, you can record the >> xpath generated from Selenium IDE and the one generated by Tellurium. After >> you stop at the breakpoint, you can use DOM inspector/XPather to validate >> the two xpaths to see if you can find the UI element with them. If the xpath >> generated by Tellurium cannot find the UI but the one from Selenium can, you >> need to refactor you UI module to make it work. >> >> 5) Seems you use ids for UI elements a lot, are these ids dynamic or >> static? If they are static, you can try to use jQuery selector, which is >> super fast with ids. If they are dynamic, you cannot really use them >> directly in your UI module, but you can put the id pattern there instead the >> id itself directly. >> >> Please post the selenium test code and the log file. I like to see the >> xpath generated from Selenium IDE. I would suggest you to refactor you UI >> modules to use Table and List objects to address the Ajax responses. >> >> Thanks, >> >> Jian >> >> >> On Wed, Aug 12, 2009 at 9:15 PM, John <[email protected]> wrote: >> >>> >>> Would it be possible for you to pack your project to only include that >>> page's html source >>> and the corresponding test cases. Then send them to my email address. >>> I can use the MockHttpServer >>> to debug your code. >>> >>> Thanks, >>> >>> Jian >>> >>> On Aug 12, 6:40 pm, Ben Groeneveld <[email protected]> wrote: >>> > We looked at this in Windows Firefox also with the same results. In >>> debug >>> > at breakpoint after Ajax requests an examination with Firebug shows the >>> tag >>> > is there. But the tag is not found by our DSL or TestNG codes. We did >>> not >>> > verify this with teJQuery just Firebug. >>> > >>> > If we write a SeleneseTestcase and perform the same test - >>> isElementPresent >>> > - the id is found. So it would seem to be some issue with Tellurium >>> > processing. >>> > >>> > Not sure how to proceed. It is nice that it works in IE, but all of >>> our >>> > continuous integration is on a Redhat server. Hope that helps, BenG. >>> > >>> > On Tue, Aug 11, 2009 at 12:10 PM, Jian Fang <[email protected] >>> >wrote: >>> > >>> > > If you use jQuery selector, do the similar steps, i.e., generate the >>> jQuery >>> > > selectors using dump(). >>> > > Set the breakpoint and once the program stops at the breakpoint, open >>> up >>> > > Firebug console in that window, >>> > > you should be able to run jQuery in Firebug console directly since >>> the >>> > > custom selenium server comes with jQuery 1.3.2. >>> > >>> > > For example, you have generated jQuery selector "div > span", then >>> you can >>> > > run the following jQuery >>> > > in Firebug >>> > >>> > > teJQuery("div > span") >>> > >>> > > to see if it returns any elements. Note that we gave up the control >>> of $ >>> > > and changed jQuery to teJQuery. >>> > >>> > > Thanks, >>> > >>> > > Jian >>> > >>> > > On Tue, Aug 11, 2009 at 2:23 PM, Jian Fang <[email protected] >>> >wrote: >>> > >>> > >> BTW, to debug, you may need to use your Firefox profile (settings in >>> > >> TelluriumConfig.groovy if you use the embedded selenium >>> > >> server) so that you have the DOM inspector/XPather plugin available >>> on the >>> > >> running Firefox instance, also you may need to turn >>> > >> the mutliple window flag on. >>> > >>> > >> Thanks, >>> > >>> > >> Jian >>> > >>> > >> On Tue, Aug 11, 2009 at 2:15 PM, Jian Fang < >>> [email protected]>wrote: >>> > >>> > >>> Would it possible that in Firefox, the UI element corresponding to >>> > >>> "EcisPlusUiQrInnie.expand" also >>> > >>> got updated after the Ajax response came back? One way to verify >>> this is >>> > >>> to use the dump() method to generate >>> > >>> all XPath locators for different UI objects including >>> > >>> "EcisPlusUiQrInnie.expand", put a breakpoint >>> > >>> on >>> > >>> > >>> click "EcisPlusUiQrInnie.expand" >>> > >>> > >>> and try to find if the generated XPath could be found using DOM >>> > >>> inspector/XPather plugin after the program >>> > >>> stops at the above breakpoint, i.e., after the Ajax response comes >>> back. >>> > >>> > >>> Let us know what you find. >>> > >>> > >>> If you use jQuery selector, it would be another story. >>> > >>> > >>> Thanks, >>> > >>> > >>> Jian >>> > >>> > >>> On Tue, Aug 11, 2009 at 1:57 PM, Ben Groeneveld < >>> [email protected]>wrote: >>> > >>> > >>>> Reran the script using Firefox 3.0.13 and 3.5.2 on Fedora >>> > >>>> 11 using your latest Tellurium TestNG reference project >>> tellurium-0.6.0. On this and similar ajax segments of the script: >>> > >>>> times out waiting for ewlements expected to be present. The same >>> script >>> > >>>> works well on IE7 WindowsXP same Tellurium project. The best that >>> I can >>> > >>>> describe the behavior is "after an Ajax request subsequent >>> searches for >>> > >>>> elements already existing or newly added fail." For example, in >>> the >>> > >>>> following dsl: >>> > >>>> click "EcisPlusUiCAV.Save" // Ajax >>> > >>>> println "Testing - Pausing" >>> > >>>> pause 10000 >>> > >>> > >>>> println "Testing - Verification In Quick Reference" >>> > >>>> click "EcisPlusUiQrInnie.expand" // Ajax >>> > >>>> println "Testing - Pausing" >>> > >>>> pause 10000 >>> > >>>> captureScreenshot "ExpandScreenShot.png" >>> > >>>> def checkEmail = getText("EcisPlusUiQr.CustomerEmail") >>> > >>> > >>>> The .Save causes the second .expand to fail on a Selenium >>> > >>>> isElementPresent. If I comment the .Save, then the .expand >>> succeeds, but >>> > >>>> then the getText fails on an isElementPresent. Yet the screenshot >>> displays >>> > >>>> the element. It would seem the Ajax requests are causing a side >>> effect, not >>> > >>>> just related to displaying previously non-existent content.. Hope >>> that >>> > >>>> helps, BenG. >>> > >>> > >>>> On Mon, Aug 10, 2009 at 9:04 PM, Jian Fang < >>> [email protected]>wrote: >>> > >>> > >>>>> I am also curious why it is not working for Firefox. If you >>> increase >>> > >>>>> the timeout threshold, the test still times out in Firefox? >>> > >>> > >>>>> The new method waitForAjaxResponse will be added once Mikhail >>> finishes >>> > >>>>> the prototyping. >>> > >>> > >>>>> Thanks, >>> > >>> > >>>>> Jian >>> > >>> > >>>>> On Mon, Aug 10, 2009 at 7:04 PM, Ben Groeneveld < >>> [email protected] >>> > >>>>> > wrote: >>> > >>> > >>>>>> Works like a charm in IE on windows. We are curious - if you >>> are >>> > >>>>>> using Selenium underneath then why is it not working properly on >>> Firefox? >>> > >>>>>> Is this a Selenium restriction or . . . Development on unix >>> would be >>> > >>>>>> preferable. When do you anticipate availability in Firefox? >>> Thanks, BenG. >>> > >>> > >>>>>> On Mon, Aug 10, 2009 at 11:01 AM, Ben Groeneveld < >>> > >>>>>> [email protected]> wrote: >>> > >>> > >>>>>>> That might be the issue - I am using Firefox on Fedora linux. >>> I'll >>> > >>>>>>> try it on Windows. >>> > >>> > >>>>>>> On Mon, Aug 10, 2009 at 9:28 AM, Jian Fang < >>> [email protected] >>> > >>>>>>> > wrote: >>> > >>> > >>>>>>>> waitForElementPresent is still a selenium call under the hood. >>> Have >>> > >>>>>>>> you seen the page updated before it timed out? Or >>> > >>>>>>>> the 3000 is not long enough for the Ajax response? >>> > >>> > >>>>>>>> Mikhail is working on Ajax response and he made some progress >>> on >>> > >>>>>>>> Firefox, but is still working on IE. Mikhail, do >>> > >>>>>>>> you have anything to add? >>> > >>> > >>>>>>>> Thanks, >>> > >>> > >>>>>>>> Jian >>> > >>> > >>>>>>>> On Mon, Aug 10, 2009 at 11:56 AM, Ben Groeneveld < >>> > >>>>>>>> [email protected]> wrote: >>> > >>> > >>>>>>>>> Our impression has been that with Tellurium we should be able >>> to >>> > >>>>>>>>> test for Ajax responses that produce page updates. Yet in >>> our testing to >>> > >>>>>>>>> date we are not able to test for or verify Ajax responses >>> that update page >>> > >>>>>>>>> regions. For example, the following DSL (below) that >>> produces a page update >>> > >>>>>>>>> will time out. Are there some specific settings that we >>> should be using? >>> > >>>>>>>>> Thanks! >>> > >>> > >>>>>>>>> click "EcisPlusUiQrInnie.expand" >>> > >>>>>>>>> waitForElementPresent("MailToo.mailto", 3000) >>> >>> >> > > > > --~--~---------~--~----~------------~-------~--~----~ You received this message because you are subscribed to the Google Groups "tellurium-users" group. To post to this group, send email to [email protected] To unsubscribe from this group, send email to [email protected] For more options, visit this group at http://groups.google.com/group/tellurium-users?hl=en -~----------~----~----~----~------~----~------~--~---
