Thanks very much Jonathan for spotting that error!

Jade

On Jul 21, 2:54 am, Jonathan Share <[email protected]> wrote:
> Your problem is that here;
>
> if(spim.isElementPresent("LicenseAgreement.GoToPersonalInformation")) {
>            spim.click("LicenseAgreement.GoToPersonalInformation");
>            spim.waitForPageToLoad(30000);
>            spim.waitForElementPresent(collegeId, 30000);
>
> }
>
> You should be using slam, not spim as it is the slam module that has
> defined the LicenseAgreement model.
>
> Other than that it looks like your setup is very similar to mine,
> other than I push as much logic as possible into the *Module classes.
> For example, I would have moved the returnToPersonalInformationPage
> method into the StudentLicenseAgreementModule class making the test
> itself easier to read and the code reusable in other tests in the
> future.
>
> Regards,
>
> Jonathan
>
> On 20 July 2010 21:37, Jade <[email protected]> wrote:
>
> > Thanks for your quick reply Jonathan. The stacktrace is:
>
> > org.telluriumsource.exception.UiObjectNotFoundException: Cannot find
> > UI Object LicenseAgreement.GoToPersonalInformation
> >        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native
> > Method)
> >        at
> > sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:
> > 39)
> >        at
> > sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:
> > 27)
> >        at java.lang.reflect.Constructor.newInstance(Constructor.java:513)
> >        at
> > org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:
> > 77)
> >        at org.codehaus.groovy.runtime.callsite.ConstructorSite
> > $ConstructorSiteNoUnwrapNoCoerce.callConstructor(ConstructorSite.java:
> > 107)
> >        at
> > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:
> > 52)
> >        at
> > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:
> > 192)
> >        at
> > org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:
> > 200)
> >        at
> > org.telluriumsource.dsl.BaseDslContext.walkToWithException(BaseDslContext.groovy:
> > 155)
> >        at org.telluriumsource.dsl.BaseDslContext
> > $walkToWithException.callCurrent(Unknown Source)
> >        at
> > org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
> > 44)
> >        at org.telluriumsource.dsl.BaseDslContext
> > $walkToWithException.callCurrent(Unknown Source)
> >        at
> > org.telluriumsource.dsl.BaseDslContext.isElementPresent(BaseDslContext.groovy:
> > 471)
> >        at
> > test.StudentSubmissionJUnitTestCase.returnToPersonalInformationPage(StudentSubmissionJUnitTestCase.java:
> > 141)
> >        at
> > test.StudentSubmissionJUnitTestCase.testFillOutPersonalInformation(StudentSubmissionJUnitTestCase.java:
> > 104)
> >        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
> >        at
> > sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
> > 39)
> >        at
> > sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
> > 25)
> >        at java.lang.reflect.Method.invoke(Method.java:597)
> >        at org.junit.runners.model.FrameworkMethod
> > $1.runReflectiveCall(FrameworkMethod.java:44)
> >        at
> > org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:
> > 15)
> >        at
> > org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:
> > 41)
> >        at
> > org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:
> > 20)
> >        at
> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
> > 76)
> >        at
> > org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:
> > 50)
> >        at org.junit.runners.ParentRunner$3.run(ParentRunner.java:193)
> >        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:52)
> >        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:191)
> >        at org.junit.runners.ParentRunner.access$000(ParentRunner.java:42)
> >        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:184)
> >        at
> > org.junit.internal.runners.statements.RunBefores.evaluate(RunBefores.java:
> > 28)
> >        at
> > org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:
> > 31)
> >        at org.junit.runners.ParentRunner.run(ParentRunner.java:236)
> >        at
> > org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:
> > 46)
> >        at
> > org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:
> > 38)
> >        at
> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
> > 467)
> >        at
> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:
> > 683)
> >        at
> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:
> > 390)
> >        at
> > org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:
> > 197)
>
> > Here are snippets of the calling Junit Test and Module methods:
>
> >    /**
> >     * Fill out page 1 of the student submission and press Submit.
> >     */
> >   �...@test
> >    public void testFillOutPersonalInformation() {
> >        spim.doResetForm();
> >        // Select the first non-empty option/value pair from each selection
> > list
> >        // and verify that it's selected.
>
> >        TestingUtils.selectFirstValidOption(collegeId, spim);
> >        TestingUtils.selectFirstValidOption(departmentId, spim);
> >        TestingUtils.selectFirstValidOption(degreeId, spim);
> >        TestingUtils.selectFirstValidOption(disciplineId, spim);
>
> >        spim.doFillOutForm("M", "1987", "999-999-9999",
> >                "101 Permanent Address Austin, TX 78704", "[email protected]",
> >                "888-888-8888", "101 Current Address Austin, TX 78704");
>
> >        spim.click("PersonalInformationForm.Submit");
> >        spim.waitForPageToLoad(30000);
> >        assertTrue(
> >                "LicenseAgreement page hasn't loaded. Personal Information 
> > probably
> > has an error.",
> >                slam.isElementPresent("LicenseAgreement.Submit"));
>
> >        returnToPersonalInformationPage();   // this is where the error
> > begins. Page one is correct so page 2 (license agreement) has loaded.
>
> >    }
>
> >  /**
> >     * We're on the license agreement page. Click on the input image
> > to return
> >     * to the personal information page.
> >     */
> >    private void returnToPersonalInformationPage() {
> >        System.out.println("returnToPersonalInformationPage title: "
> >                + spim.getTitle());
> >        if
> > (spim.isElementPresent("LicenseAgreement.GoToPersonalInformation")) {
> >            spim.click("LicenseAgreement.GoToPersonalInformation");
> >            spim.waitForPageToLoad(30000);
> >            spim.waitForElementPresent(collegeId, 30000);
>
> >        }
> >        System.out.println("returnToPersonalInformationPage title: "
> >                + spim.getTitle());
> >    }
>
> > Here's some of the output from the console:
>
> > TE: Found exact match for UI Module 'LicenseAgreement':
> > {"id":"LicenseAgreement","relaxDetails":[],"matches":
> > 1,"relaxed":false,"score":100.0,"found":true}
> > TE: Found exact match for UI Module 'LicenseAgreement':
> > {"id":"LicenseAgreement","relaxDetails":[],"matches":
> > 1,"relaxed":false,"score":100.0,"found":true}
> > TE: Name: getTitle, start: 1279654077983, duration: 14ms
> > TE: Name: getTitle, start: 1279654077983, duration: 14ms
> > returnToPersonalInformationPage title: License Agreement
> > Cannot find UI Object LicenseAgreement in PersonalInformationForm
>
> > Note that the StudentLicenseAgreementModule contains the InputBox:
> > GoToPersonalInformation
>
> > public class StudentLicenseAgreementModule extends DslContext {
> >        public void defineUi() {
>
> >                // Page two: license agreement
> >                ui.Form(uid: "LicenseAgreement", clocator: [tag: "form", 
> > method:
> > "post", action: "/vireo101/vireo", class: "ds-interactive-div", id:
> > "aspect_vireo_submit_LicenseAgreement_div_licenseAgreement"]){
> >                        CheckBox(uid: "Agree", clocator: [tag: "input", 
> > type: "checkbox",
> > value: "agree", name: "agree"])
>
> >                        InputBox(uid: "GoToPersonalInformation", clocator: 
> > [tag: "input",
> > type: "image", value: "Verify Info", title: "Verify User Data: Viewed
> > Step", name: "step_one", class: "ds-button-field vireo_step one", id:
> > "aspect_vireo_submit_LicenseAgreement_field_step_one"], respond:
> > ["mouseOut", "mouseOver", "click"])
> >                        SubmitButton(uid: "Submit", clocator: [tag: "input", 
> > type:
> > "submit", value: "Agree and Continue>>", name: "saveAndContinue",
> > class: "ds-button-field", id:
> > "aspect_vireo_submit_LicenseAgreement_field_saveAndContinue"])
> >                }
> >        }
>
> > I don't know if I need to include more containers around the html
> > elements. I removed most of them.
>
> > BTW, I got it working by defining a new module that includes forms
> > from multiple pages but I'd prefer not to do this if possible. Thus,
> > if you have any information to share about your set up, that would be
> > very helpful.
>
> > Jade
>
> > On Jul 20, 2:09 pm, Jonathan Share <[email protected]> wrote:
> >> I'm doing something similar and this works flawlessly.
> >> isElementPresent really shouldn't be throwing an exception. Can you
> >> email the stacktrace you are getting?
>
> >> Regards,
>
> >> Jonathan
>
> >> On 20 July 2010 18:48, Jade <[email protected]> wrote:
>
> >> > We have a 5 page submission form. I'd like to test page one with many
> >> > different values before moving on to testing page two. Thus, I have
> >> > one test that fills out the form with valid data. After
>
> ...
>
> read more »

-- 
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.

Reply via email to