No feature proposals off the top of my head right now, but you will be
sure to hear from me if I come up with anything.

Regards,

Jonathan

On 11 May 2010 17:53, Jian Fang <[email protected]> wrote:
> Seems in real world, there are always exceptions.
>
> BTW, Jonathan, since you used Tellurium a lot. Do you have any feature
> proposal
> or other suggestions to make 0.8.0 easier to use than 0.7.0? We haven't
> decided
> the 0.8.0 tasks yet. But Trump will be on the top of the list.
>
> Thanks,
>
> Jian
>
> On Tue, May 11, 2010 at 9:38 AM, Jonathan Share <[email protected]> wrote:
>>
>> Yes I agree the id in the DOM _should_ be unique, but the team that
>> wrote the app I am testing obviously hasn't had any kind of basic
>> education in how HTML should be used (and this is a purchased product
>> so no real chance of getting this fixed). But I will give the partial
>> matching trick a try next time I trip over this kind of problem.
>>
>> On 11 May 2010 15:26, Jian Fang <[email protected]> wrote:
>> > Thanks Jonathan.
>> >
>> > The id in the DOM should be unique and id selector is the fastest one.
>> > That
>> > is why jQuery
>> > and Tellurium use id only and throw away other parts.
>> >
>> > If you really need to use other attributes, you can try to use partial
>> > matching, i.e., if the ID is "aaa"
>> > you can try "*aaa". Then tellurium will not optimize the generated
>> > selector.
>> >
>> > Thanks,
>> >
>> > Jian
>> >
>> > On Tue, May 11, 2010 at 4:07 AM, Jonathan Share <[email protected]>
>> > wrote:
>> >>
>> >> I've seen this behaviour several times before and haven't yet set
>> >> aside time to create a reduced test case, but the problem for me has
>> >> been that that the selector used matches more than one html element.
>> >> Note that when you use id in a clocator with CSSSelectors then
>> >> tellurium throws away the definition of the containing elements and
>> >> starts the selector from the element id.
>> >>
>> >> Therefore if you have another element on the page with the id
>> >> saveButton you are probably matching that as well. After noticing this
>> >> behaviour I have begun to avoid using id wherever possible in
>> >> preference for name on form elements.
>> >>
>> >> Hope this helps,
>> >>
>> >> Jonathan
>> >>
>> >> On 11 May 2010 03:15, Jian Fang <[email protected]> wrote:
>> >> > If you use Tellurium 0.7.0, please turn on the Engine log using
>> >> >
>> >> > useEngineLog(true)
>> >> >
>> >> > so that Selenium core will return JavaScript error stack. Also, you
>> >> > can
>> >> > use
>> >> > the
>> >> > firebug or firebug lite bundled in Selenium server 1.0.1-te3 to see
>> >> > the
>> >> > log
>> >> > from console
>> >> > and look at which line caused the problem.
>> >> >
>> >> > Thanks,
>> >> >
>> >> > Jian
>> >> >
>> >> > On Mon, May 10, 2010 at 7:11 PM, super fan 911
>> >> > <[email protected]>
>> >> > wrote:
>> >> >>
>> >> >> I have the following snippet of HTML code for a pop up window:
>> >> >>
>> >> >> <div id="alertDeleteConfirm" class="popupModalWindow">
>> >> >>      <div class="top">
>> >> >>        <h1>Delete Confirmation</h1>
>> >> >>        <a onclick="cancelDelete();return false;" href="#"
>> >> >> class="closeModal">Close</a>
>> >> >>      </div>
>> >> >>      <div class="main">
>> >> >>        Are you sure you want to delete this?<br>
>> >> >>        <br>
>> >> >>        <br>
>> >> >>      </div>
>> >> >>      <div class="actions"><button onclick="confirmDelete();"
>> >> >> id="deleteButton" class="smallPrimary"><span style="text-align:
>> >> >> center;">Delete</span></button>
>> >> >>        <button onclick="cancelDelete();return false;"
>> >> >> id="cancelButton"
>> >> >> class="smallSecondary"><span>Cancel</span></button>
>> >> >>      </div>
>> >> >> </div>
>> >> >>
>> >> >> I have defined the following UI definition:
>> >> >>
>> >> >>                ui.Container(uid: "delete_confirmation_popup",
>> >> >> clocator:
>> >> >> [tag:
>> >> >> "div", id: "alertDeleteConfirm"]) {
>> >> >>                        TextBox(uid: "title", clocator: [tag: "h1"])
>> >> >>                        UrlLink(uid: "close", cloator: [text:
>> >> >> "Close",
>> >> >> class:
>> >> >> "closeModal"])
>> >> >>                        TextBox(uid: "message", clocator: [tag:
>> >> >> "div",
>> >> >> class: "main"])
>> >> >>                        Button(uid: "delete", clocator: [tag:
>> >> >> "button",
>> >> >> id:
>> >> >> "saveButton",
>> >> >> class: "smallPrimary"], respond: ["click"])
>> >> >>                        Button(uid: "cancel", clocator: [tag:
>> >> >> "button",
>> >> >> id:
>> >> >> "cancelButton",
>> >> >> class: "smallSecondary"], respond: ["click"])
>> >> >>                }
>> >> >>
>> >> >> When I do a isElementPresent for all the UI objects, they all return
>> >> >> true.  But, when I do a click on 'close', 'delete' they gives me a
>> >> >> selenium error.  The 'cancel' works.  Below is the selenium stack
>> >> >> trace,
>> >> >>
>> >> >> com.thoughtworks.selenium.SeleniumException: ERROR: Command
>> >> >> execution
>> >> >> failure. Please search the forum at http://clearspace.openqa.org for
>> >> >> error details from the log window.  The error message is:
>> >> >> element.dispatchEvent is not a function
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:
>> >> >> 97)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:
>> >> >> 91)
>> >> >>        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite
>> >> >>
>> >> >> $PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:
>> >> >> 229)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:
>> >> >> 52)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>> >> >> 129)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.connector.CustomSelenium.getBundleResponse(CustomSelenium.groovy:
>> >> >> 257)
>> >> >>        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at
>> >> >>
>> >> >> groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:
>> >> >> 149)
>> >> >>        at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown
>> >> >> Source)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.dispatch.Dispatcher.methodMissing(Dispatcher.groovy:
>> >> >> 56)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:
>> >> >> 813)
>> >> >>        at
>> >> >>
>> >> >> groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:
>> >> >> 1107)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1060)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
>> >> >> 39)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>> >> >> 129)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.bundle.BundleProcessor.passBundledCommand(BundleProcessor.groovy:
>> >> >> 322)
>> >> >>        at org.telluriumsource.component.bundle.BundleProcessor
>> >> >> $passBundledCommand.callCurrent(Unknown Source)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.bundle.BundleProcessor.process(BundleProcessor.groovy:
>> >> >> 414)
>> >> >>        at org.telluriumsource.component.bundle.BundleProcessor
>> >> >> $process.callCurrent(Unknown Source)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.bundle.BundleProcessor.methodMissing(BundleProcessor.groovy:
>> >> >> 427)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:
>> >> >> 813)
>> >> >>        at
>> >> >>
>> >> >> groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:
>> >> >> 1107)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1060)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
>> >> >> 39)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>> >> >> 129)
>> >> >>        at org.telluriumsource.component.event.EventHandler
>> >> >> $_click_closure6.doCall(EventHandler.groovy:145)
>> >> >>        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
>> >> >> 273)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:
>> >> >> 66)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>> >> >> 151)
>> >> >>        at org.telluriumsource.component.event.EventHandler
>> >> >> $_click_closure6.doCall(EventHandler.groovy)
>> >> >>        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
>> >> >> 273)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
>> >> >> 39)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>> >> >> 121)
>> >> >>        at org.telluriumsource.component.event.EventHandler
>> >> >> $_processEvents_closure1.doCall(EventHandler.groovy:85)
>> >> >>        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
>> >> >> 273)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at groovy.lang.Closure.call(Closure.java:276)
>> >> >>        at groovy.lang.Closure.call(Closure.java:289)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:
>> >> >> 1176)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.DefaultGroovyMethods.each(DefaultGroovyMethods.java:
>> >> >> 1152)
>> >> >>        at org.codehaus.groovy.runtime.dgm$114.invoke(Unknown Source)
>> >> >>        at org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite
>> >> >> $PojoMetaMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:
>> >> >> 270)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:
>> >> >> 52)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>> >> >> 125)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.event.EventHandler.processEvents(EventHandler.groovy:
>> >> >> 83)
>> >> >>        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite
>> >> >>
>> >> >> $PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:
>> >> >> 266)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:
>> >> >> 51)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
>> >> >> 44)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:
>> >> >> 56)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.telluriumsource.component.event.EventHandler.click(EventHandler.groovy:
>> >> >> 144)
>> >> >>        at org.telluriumsource.component.event.EventHandler
>> >> >> $click.call(Unknown Source)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
>> >> >> 40)
>> >> >>        at org.telluriumsource.component.event.EventHandler
>> >> >> $click.call(Unknown Source)
>> >> >>        at org.telluriumsource.dsl.BaseDslContext
>> >> >> $_click_closure4.doCall(BaseDslContext.groovy:168)
>> >> >>        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
>> >> >> 273)
>> >> >>        at
>> >> >> groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
>> >> >> 39)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>> >> >> 129)
>> >> >>        at
>> >> >> org.telluriumsource.ui.object.UrlLink.click(UrlLink.groovy:26)
>> >> >>        at org.telluriumsource.ui.object.UrlLink$click.call(Unknown
>> >> >> Source)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:
>> >> >> 90)
>> >> >>        at
>> >> >> org.telluriumsource.dsl.BaseDslContext.click(BaseDslContext.groovy:
>> >> >> 166)
>> >> >>        at org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite
>> >> >> $PogoCachedMethodSiteNoUnwrap.invoke(PogoMetaMethodSite.java:246)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:
>> >> >> 51)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
>> >> >> 44)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>> >> >> 143)
>> >> >>        at
>> >> >>
>> >> >>
>> >> >>
>> >> >> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>> >> >> 151)
>> >> >> ... Removed 65 stack frames
>> >> >>
>> >> >>
>> >> >> I need some pointers on how to fix this issue.  Thanks in advance!
>> >> >>
>> >> >>
>> >> >>
>> >> >>
>> >> >> --
>> >> >> 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.
>> >> >>
>> >> >
>> >> > --
>> >> > 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.
>> >> >
>> >>
>> >> --
>> >> 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.
>> >>
>> >
>> > --
>> > 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.
>> >
>>
>> --
>> 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.
>>
>
> --
> 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.
>

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