Look a bit closer and I see the problem here:

"events":[Ljava.lang.String;@58f41393

Seems the toJSON method in the List object has a bug there. I will fix it
soon.

Thanks again,

Jian

On Tue, Aug 31, 2010 at 1:49 PM, Jian Fang <[email protected]> wrote:

> But the json parse error is an issue there, I will look into it.
>
> Thanks for reporting this.
>
> Jian
>
>
> On Tue, Aug 31, 2010 at 1:25 PM, Jian Fang <[email protected]>wrote:
>
>> Hi Jade,
>>
>> Why you need to use List for a selector? Shouldn't the Selector object
>> satisfy your need?
>> That is to say, your UI module could be like
>>
>>                 ui.Form(uid: "DegreeInformationForm", clocator: [tag:
>> "form", method: "post", action: "${postAction}", class:
>> "ds-interactive-divview-form", id: "aspect_vireo_admin_View_div_view-form"])
>> {
>>              Selector(uid: "degree", clocator:
>> [id:"aspect_vireo_admin_View_field_degree" ]
>> }
>>
>> Then you could call selectByLabel, selectByValue, or selectByIndex.
>>
>> Thanks,
>>
>> Jian
>>
>>
>>
>> On Mon, Aug 30, 2010 at 12:24 PM, Jade <[email protected]> wrote:
>>
>>> Hi,
>>>
>>> We have an ajax powered list that is clickable. In order to manipulate
>>> the list, the user first selects it. This replaces the "fake HTML"
>>> with select list HTML.
>>>
>>> However, the list has a json parse error until I remove the respond:
>>> ["click"] option. But, then the list cannot be clicked and manipulated
>>> in the code.
>>>
>>> Here's the module as I'd like to define it:
>>> 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"]) {
>>>                        List(uid: "degree", clocator: [tag: "select", id:
>>> "aspect_vireo_admin_View_field_degree"], separator: "option", respond:
>>> ["click"]) {
>>>                                Container(uid: "{all}", clocator: [:])
>>>                        }
>>>                }
>>>
>>>
>>> ERROR: Command execution failure. Please search the Tellurium User
>>> Group at http://groups.google.com/group/tellurium-users for error
>>> details from the log window.  The error message is: JSON.parse
>>>
>>> com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:
>>> 97)
>>>
>>>
>>> com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:
>>> 91)
>>>                sun.reflect.GeneratedMethodAccessor62.invoke(Unknown
>>> Source)
>>>
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>                java.lang.reflect.Method.invoke(Method.java:616)
>>>                org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite
>>> $PojoCachedMethodSiteNoUnwrapNoCoerce.invoke(PojoMetaMethodSite.java:
>>> 229)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.PojoMetaMethodSite.call(PojoMetaMethodSite.java:
>>> 52)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>>> 129)
>>>
>>>
>>> org.telluriumsource.component.connector.CustomSelenium.getBundleResponse(CustomSelenium.groovy:
>>> 257)
>>>                sun.reflect.GeneratedMethodAccessor61.invoke(Unknown
>>> Source)
>>>
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>                java.lang.reflect.Method.invoke(Method.java:616)
>>>
>>>  org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
>>> 88)
>>>                groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1058)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>>>
>>> groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:
>>> 149)
>>>                groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown
>>> Source)
>>>
>>>
>>> org.telluriumsource.component.dispatch.Dispatcher.methodMissing(Dispatcher.groovy:
>>> 56)
>>>                sun.reflect.GeneratedMethodAccessor60.invoke(Unknown
>>> Source)
>>>
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>                java.lang.reflect.Method.invoke(Method.java:616)
>>>
>>>  org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
>>> 88)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:
>>> 813)
>>>
>>>  groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:
>>> 1107)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1060)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
>>> 39)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>>> 129)
>>>
>>>
>>> org.telluriumsource.component.bundle.BundleProcessor.passBundledCommand(BundleProcessor.groovy:
>>> 322)
>>>                org.telluriumsource.component.bundle.BundleProcessor
>>> $passBundledCommand.callCurrent(Unknown Source)
>>>
>>>
>>> org.telluriumsource.component.bundle.BundleProcessor.process(BundleProcessor.groovy:
>>> 414)
>>>                org.telluriumsource.component.bundle.BundleProcessor
>>> $process.callCurrent(Unknown Source)
>>>
>>>
>>> org.telluriumsource.component.bundle.BundleProcessor.methodMissing(BundleProcessor.groovy:
>>> 427)
>>>                sun.reflect.GeneratedMethodAccessor54.invoke(Unknown
>>> Source)
>>>
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>                java.lang.reflect.Method.invoke(Method.java:616)
>>>
>>>  org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
>>> 88)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:
>>> 813)
>>>
>>>  groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:
>>> 1107)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1060)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>>>
>>> groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:
>>> 149)
>>>                groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown
>>> Source)
>>>
>>>
>>> org.telluriumsource.component.custom.Extension.methodMissing(Extension.groovy:
>>> 20)
>>>                sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)
>>>
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>>> 57)
>>>
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>                java.lang.reflect.Method.invoke(Method.java:616)
>>>
>>>  org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
>>> 88)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMissingMethod(MetaClassImpl.java:
>>> 813)
>>>
>>>  groovy.lang.MetaClassImpl.invokePropertyOrMissing(MetaClassImpl.java:
>>> 1107)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1060)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:
>>> 39)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
>>> 40)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>>> 117)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>>> 129)
>>>
>>>
>>> org.telluriumsource.dsl.BaseDslContext.getUiModuleValidationResult(BaseDslContext.groovy:
>>> 1417)
>>>                org.telluriumsource.dsl.BaseDslContext
>>> $getUiModuleValidationResult.callCurrent(Unknown Source)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
>>> 44)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>>> 143)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>>> 151)
>>>
>>> org.telluriumsource.dsl.BaseDslContext.validate(BaseDslContext.groovy:
>>> 1404)
>>>                sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)
>>>
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>>> 57)
>>>
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>                java.lang.reflect.Method.invoke(Method.java:616)
>>>
>>>  org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
>>> 88)
>>>                groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>>>
>>>
>>> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:
>>> 362)
>>>
>>>  groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:886)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.callCurrent(PogoMetaClassSite.java:
>>> 66)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:
>>> 44)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>>> 143)
>>>
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:
>>> 151)
>>>
>>>
>>> org.tdl.vireo.webtest.datadriventests.module.admin.DegreeInformationModule
>>> $_defineModule_closure14.doCall(DegreeInformationModule.groovy:128)
>>>                sun.reflect.NativeMethodAccessorImpl.invoke0(Native
>>> Method)
>>>
>>> Here's the output of dump:
>>>
>>> DegreeInformationForm: jquery=#aspect_vireo_admin_View_div_view-form
>>> DegreeInformationForm.degree:
>>> jquery=#aspect_vireo_admin_View_field_degree
>>> DegreeInformationForm.degree[2]:
>>> jquery=#aspect_vireo_admin_View_field_degree > option:eq(1)
>>> -------------------------------------------------------
>>> Here's the output of toString:
>>>
>>> [{"obj":{"uid":"DegreeInformationForm","locator":
>>> {"tag":"form","attributes":{"id":"aspect_vireo_admin_View_div_view-
>>> form","action":"xmlui/vireo/admin/detail?update=true","class":"ds-
>>> interactive-div view-
>>> form","method":"post"}},"uiType":"Form","metaData":
>>>
>>> {"id":"DegreeInformationForm","type":"UiObject"}},"key":"DegreeInformationForm"},
>>> {"obj":{"uid":"degree","locator":{"tag":"select","attributes":
>>> {"id":"aspect_vireo_admin_View_field_degree"}},"events":
>>> [Ljava.lang.String;@58f41393
>>> ,"uiType":"List","separator":"option","metaData":
>>> {"id":"degree","type":"UiObject"}},"key":"DegreeInformationForm.degree"},
>>> {"obj":{"uid":"_all","locator":{},"uiType":"Container","metaData":
>>> {"id":"_all","index":
>>>
>>> {"value":"all","type":"VAL"},"type":"List"}},"key":"DegreeInformationForm.degree._all"}]
>>>
>>> Diagnosis Result for DegreeInformationForm.degree
>>>
>>> When I remove the respond: ["click"] code, then the list can't be
>>> clicked and the list size is 0:
>>>
>>> 1)
>>>
>>> testDataDriven(org.tdl.vireo.webtest.datadriventests.test.admin.DegreeInformationTest)
>>> java.lang.AssertionError: 1 > list, DegreeInformationForm.degree,
>>> size: 0
>>>        at org.junit.Assert.fail(Assert.java:91)
>>>        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
>>>        at
>>>
>>> sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:
>>> 57)
>>>        at
>>>
>>> sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:
>>> 43)
>>>        at java.lang.reflect.Method.invoke(Method.java:616)
>>>        at
>>> org.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:
>>> 88)
>>>        at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:233)
>>>        at org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite
>>> $StaticMetaMethodSiteNoUnwrap.invoke(StaticMetaMethodSite.java:130)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.StaticMetaMethodSite.callStatic(StaticMetaMethodSite.java:
>>> 99)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallStatic(CallSiteArray.java:
>>> 48)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:
>>> 167)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callStatic(AbstractCallSite.java:
>>> 175)
>>>        at
>>>
>>> org.tdl.webtest.utils.TestingUtils.selectClickableOption(TestingUtils.groovy:
>>> 112)
>>>        at org.tdl.webtest.utils.TestingUtils
>>> $selectClickableOption.call(Unknown Source)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:
>>> 40)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>>> 117)
>>>        at
>>>
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:
>>> 137)
>>>        at
>>>
>>> org.tdl.vireo.webtest.datadriventests.module.admin.DegreeInformationModule
>>> $_defineModule_closure15.doCall(DegreeInformationModule.groovy:151)
>>>
>>> Here's the piece of the code that fails:
>>> public static void selectClickableOption(final String listUid,
>>>        final DslContext module, final int indx, boolean shouldFail) {
>>>
>>>                String elementId;
>>>                // With Ajax, the module has to be clicked on so the uid
>>> is found.
>>>                //module.click listUid
>>>
>>>                int len = module.getListSizeBySelector(listUid)
>>>                if (indx > len) {
>>>                        fail("${indx} > list, ${listUid}, size: ${len}")
>>>                }
>>>
>>>
>>> Jade
>>>
>>> --
>>> 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]<tellurium-users%[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