Hi Jian, All of my tests are now working. Thanks very much for your help. I increased the pause to 1000. I removed the getAttribute call since I'd replaced it with the isChecked call which was working.
For my ajax html elements that have to be clicked, I have to first call disableTelluriumEngine() otherwise the TextBox won't click and then I can't update the value. Similarly, for the checkboxes, I have to disable the TelluriumEngine or not all of the checkboxes will be checked (they're also updated via ajax). Since the getTelluriumEngine was off, I couldn't call getValue on the InputBox so I called getText() method instead and that worked. Thanks again for all of your work on tellurium! Jade On Sep 10, 11:08 am, Jian Fang <[email protected]> wrote: > So, do you still have problem to get back the value? Try to increase the > pause value to see > if it helps more. The bad thing is that it makes your tests slow. > > Thanks, > > Jian > > On Fri, Sep 10, 2010 at 11:58 AM, Jade <[email protected]> wrote: > > Hi Jian, > > > I did change my pause from 500 to 1000, and that helped some. The > > waitForCondition sometimes seems to take a very long time so I've been > > avoiding using it. > > > Jade > > > On Sep 9, 4:08 pm, Jian Fang <[email protected]> wrote: > > > Thanks for the details. > > > > The click did not work even for the latest snapshot from last night? That > > is > > > really wired. > > > > If you turn off the Engine, the getValue is called on Selenium APIs. I > > > wonder if your problem is caused by > > > the fact that you could not get back the correct value right away since > > it > > > takes some time > > > for the value to be changed after the click event. Have you ever tried to > > > add some delay such as > > > > pause(1000) > > > > in the command or try some waitForCondition() command? > > > > Thanks, > > > > Jian > > > > On Thu, Sep 9, 2010 at 4:53 PM, Jade <[email protected]> wrote: > > > > Hi Jian, > > > > > The previous error was due to the selenium engine not finding the html > > > > element. I changed the module definition to fix that problem. > > > > > I had to turn the tellurium engine off otherwise the test wouldn't > > > > modify the value since the click method didn't cause the UI to click > > > > on the item, thus it wasn't selected and these lines didn't do > > > > anything: > > > > > if (value.isEmpty()) { > > > > module.type(inputUid, " "); > > > > } else { > > > > module.type(inputUid, value); > > > > } > > > > > Here's my method to test changing values on clickable text fields: > > > > > public static void testEditingClickableField(final String textUid, > > > > final String inputUid, final String value, > > > > final DslContext module, final boolean isValid) { > > > > > log.info "testEditingClickableField ${textUid}" > > > > // If not disabled, value won't change b/c element won't > > be > > > > clicked. > > > > module.disableTelluriumEngine() > > > > > String originalText = module.getText(textUid); // > > getValue > > > > is only > > > > valid if value= is viewable in the html > > > > // such as <input > > > > id="aspect_vireo_admin_View_field_firstName" > > > > class="ds-text-field firstName editable" name="firstName" type="text" > > > > value="New First Name" /> > > > > // in the code, the value is often not set. > > > > > if (!originalText.equals(value)) { > > > > > // If the value is blank, then Vireo sometimes > > > > displays none. > > > > final String NONE = "none" > > > > > boolean successful = false; > > > > int maxTries = 5; > > > > int tries = 0; > > > > > String currentTextValue > > > > String currentInputTextValue > > > > > // Due to ajax timing issues, try more than once > > to > > > > perform this > > > > action. > > > > while (!successful && tries++ < maxTries) { > > > > // click on the textUid to trigger the > > ajax > > > > / javascript to allow > > > > the value to be changed. > > > > clickFakeItem(textUid, inputUid, module, > > > > true) > > > > > if (value.isEmpty()) { > > > > module.type(inputUid, " "); > > > > } else { > > > > module.type(inputUid, value); > > > > } > > > > > module.pause(VireoTestConfig.getPauseTime()); > > > > currentTextValue = > > module.getText(textUid) > > > > //clickFakeItem(textUid, inputUid, > > module, > > > > true) > > > > module.mouseOut textUid > > > > > log.info "try ${tries}: > > > > testEditingClickableField > > > > currentTextValue: ${currentTextValue} newValue: ${value} origText: $ > > > > {originalText}" > > > > > if (isValid) { > > > > if ((value.isEmpty() && > > > > currentTextValue.equals(NONE)) || > > > > currentTextValue.equals(value)) { > > > > successful = true > > > > } > > > > } else { > > > > if > > > > (currentTextValue.equals(originalText)) { > > > > successful = true > > > > } > > > > } > > > > } > > > > > if (isValid) { > > > > > if ((value.isEmpty() && > > > > (!(currentTextValue.equals(NONE) || > > > > currentTextValue.isEmpty()))) || > > > > (!value.isEmpty() && > > > > !currentTextValue.equals(value))) { > > > > log.error("${textUid} wasn't > > updated > > > > to ${value} or ${NONE}. Its > > > > current text is ${currentTextValue}") > > > > } > > > > } else { > > > > if > > (!originalText.equals(currentTextValue)) > > > > { > > > > log.error("${textUid} shouldn't > > have > > > > been updated to ${value} or $ > > > > {NONE}. originalValue: ${originalText}, currentText: $ > > > > {currentTextValue}") > > > > } > > > > } > > > > } > > > > module.enableTelluriumEngine() > > > > } > > > > > and my module def: > > > > > String postAction = "\"${VireoTestConfig.getWebApp()}/vireo/admin/ > > > > detail?update=true\"" > > > > > public void defineModule() { > > > > > ui.Form(uid: "DegreeInformationForm", clocator: [tag: > > > > "form", > > > > method: "post", action: "${postAction}", class: "ds-interactive-div > > > > view-form", id: "aspect_vireo_admin_View_div_view-form"]) { > > > > > TextBox(uid: "committee_member_2", clocator: > > [tag: > > > > "span", class: > > > > "group-committee-", id: "aspect_vireo_admin_View_field_committee- > > > > member-2"], respond: ["click"]) > > > > TextBox(uid: "committee_member_1", clocator: > > [tag: > > > > "span", class: > > > > "group-committee-", id: "aspect_vireo_admin_View_field_committee- > > > > member-1"], respond: ["click"]) > > > > TextBox(uid: "school", clocator: [tag: "span", > > id: > > > > "aspect_vireo_admin_View_field_school", type: "text"], respond: > > > > ["click"]) > > > > > Selector(uid: "degree", clocator: [id: > > > > "aspect_vireo_admin_View_field_degree"], respond: ["click"]) > > > > > TextBox(uid: "committee_email", clocator: [tag: > > > > "span", class: > > > > "committee-email", id: "aspect_vireo_admin_View_field_committee- > > > > email"], respond: ["click"]) > > > > > TextBox(uid: "department", clocator: [tag: > > "span", > > > > id: > > > > "aspect_vireo_admin_View_field_department", type: "text"], respond: > > > > ["click"]) > > > > > Selector(uid: "college", clocator: [id: > > > > "aspect_vireo_admin_View_field_college"], respond: ["click"]) > > > > Selector(uid: "degreeLevel", clocator: [id: > > > > "aspect_vireo_admin_View_field_degreeLevel"], respond: ["click"]) > > > > > TextBox(uid: "committee_member_3", clocator: > > [tag: > > > > "span", class: > > > > "group-committee-", id: "aspect_vireo_admin_View_field_committee- > > > > member-3", type: "text"], respond: ["click"]) > > > > TextBox(uid: "discipline", clocator: [tag: > > "span", > > > > id: > > > > "aspect_vireo_admin_View_field_discipline", type: "text"], respond: > > > > ["click"]) > > > > TextBox(uid: "semester", clocator: [tag: "span", > > id: > > > > "aspect_vireo_admin_View_field_semester", type: "text"], respond: > > > > ["click"]) > > > > } > > > > > //Since ajax changes the html when a list is clicked, > > this > > > > module is > > > > required to represent clickable lists once they've been clicked. > > > > // For more information, see: > > > > >http://groups.google.com/group/tellurium-users/browse_thread/thread/9. > > .. > > > > // > > > > ui.Form(uid: "DegreeInformationClickedForm", clocator: > > [tag: > > > > "form", > > > > method: "post", action: "${postAction}", class: "ds-interactive-div > > > > view-form", id: "aspect_vireo_admin_View_div_view-form"]) { > > > > > Selector(uid: "degreeSelector", clocator: [id: > > > > "aspect_vireo_admin_View_field_degree"], respond: ["click"]) > > > > Selector(uid: "collegeSelector", clocator: [id: > > > > "aspect_vireo_admin_View_field_college"], respond: ["click"]) > > > > Selector(uid: "degreeLevelSelector", clocator: > > [id: > > > > "aspect_vireo_admin_View_field_degreeLevel"], respond: ["click"]) > > > > > InputBox(uid: "committee_emailClicked", > > clocator: > > > > [tag: "input", > > > > id: "aspect_vireo_admin_View_field_committee-email", type: "text"], > > > > respond: ["click"]) > > > > InputBox(uid: "committee_member_2Clicked", > > clocator: > > > > [tag: "input", > > > > id: "aspect_vireo_admin_View_field_committee-member-2", type: "text"], > > > > respond: ["click"]) > > > > InputBox(uid: "committee_member_1Clicked", > > clocator: > > ... > > 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.
