I checked the DslContext and seems the getValue() method is exposed there, why not use getValue directly? Selenium's implement of getAttribute is pretty complex because it uses an attribute locator, i.e., @Attribute, to append to the locator.
Thanks, Jian On Thu, Sep 9, 2010 at 5:27 PM, Jade <[email protected]> wrote: > Yes, I'm using the snapshots from last night. The getText is working > now with the code that I posted (after I made the module definition > fix that I posted) but the tellurium engine had to be off. I do have > pauses in the code. I also had to turn the tellurium engine off for > clicking on all of the checkboxes on a form or otherwise only some of > the checkboxes would be checked. > > Here's my code for that: > > public static void setCheckboxOptions(final DslContext context, > final String listUid, final boolean checked) { > > int size = context.getListSizeBySelector(listUid); > > for (int i = 1; i <= size; i++) { > setCheckbox(checked, context, "${listUid}[${i}]"); > } > } > > public static void setCheckbox(final boolean on, final DslContext > context, > final String elementUid) { > > String elementValue = (String) context > .getAttribute(elementUid, "value"); > boolean isChecked = context.isChecked(elementUid); > > // Since the html is sometimes returning "true" and other > times > "checked" -- this > // code is more complex than it should have to be. > > log.debug("setCheckbox ${elementValue}") > > // If not set to the allow value, then click the button. > if (on && !isChecked || (!on && isChecked)) { > > context.click(elementUid); > > context.pause(VireoTestConfig.getPauseTime()); > // > context.waitForPageToLoad(VireoTestConfig.getMaxWait()); // > // comment > // out? > // Make sure the value is what we set it to. > > String condition = "" > if (on) { > condition = "isChecked(\"${elementUid}\");"; > } else { > condition = > "!isChecked(\"${elementUid}\");"; > } > > log.info("setCheckbox: " + condition); > context.waitForCondition(condition, > VireoTestConfig.getMaxWait()); > > context.pause(VireoTestConfig.getPauseTime()); > > // TestingUtils.waitForAjax(selenium, > VireoTestConfig.getMaxWait()); > } > } > > and the test calling it sets the TelluriumEngine to off: > > @BeforeClass > public static void initUi() { > dlam = new DspaceLogonAdminModule(); > dlam.defineUi(); > connectSeleniumServer(); > useTelluriumEngine(false); > ... > > 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 > -- 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.
