I used the html you provided and the UI module you defined
public class ListModule extends DslContext {
public void defineUi() {
ui.Container(uid: "rotator", clocator: [tag: "div", class:
"thumbnails"]) {
List(uid: "tnails", clocator: [tag: "ul"], separator: "li") {
UrlLink(uid: "all", clocator: [:])
}
}
}
}
The following test code generated the result you wanted for both xpath and
jquery.
public class ListTestCase extends TelluriumJavaTestCase {
@Test
public void testGetSeparatorAttribute(){
ListModule lm = new ListModule();
lm.defineUi();
connectUrl("http://localhost:8080/list.html");
lm.disableJQuerySelector();
String attr = (String)lm.getParentAttribute("rotator.tnails[6]",
"class");
System.out.println("XPath: Class attribute for rotator.tnails[6] " +
attr);
lm.useJQuerySelector();
attr = (String)lm.getParentAttribute("rotator.tnails[6]", "class");
System.out.println("jQuery: Class attribute for rotator.tnails[6] "
+ attr);
}
}
The output is as follows,
22:45:58.837 INFO - Got result: OK on session
a33ea57aeefd4076a47d9df118494b7a
22:45:59.006 INFO - Command request: open[http://localhost:8080/list.html, ]
on session a33ea57aeefd4076a47d9df118494b7a
22:45:59.150 INFO - Got result: OK on session
a33ea57aeefd4076a47d9df118494b7a
22:45:59.308 INFO - Command request:
getAttribute[//descendant-or-self::d...@class="thumbnails"]/descendant-or-self::ul/li[6]/self::node()@class,
] on session a33ea57aeefd4076a47d9df118494b7a
22:45:59.327 INFO - Got result: OK,thumbnail potd on session
a33ea57aeefd4076a47d9df118494b7a
XPath: Class attribute for rotator.tnails[6] thumbnail potd
22:45:59.398 INFO - Command request: getAttribute[jquery=div.thumbnails ul >
li:eq(5)@class, ] on session a33ea57aeefd4076a47d9df118494b7a
22:45:59.418 INFO - Got result: OK,thumbnail potd on session
a33ea57aeefd4076a47d9df118494b7a
jQuery: Class attribute for rotator.tnails[6] thumbnail potd
As a result, the getParentAttribute should work for you.
Thanks,
Jian
On Mon, Jul 20, 2009 at 6:36 PM, Jian Fang <[email protected]> wrote:
> Sorry, it proved that I had a bad test case. I updated the method and
> redeployed it to Maven repo. Please update from Maven repo
> and run the test again. Since I don't have a good test web at hand, please
> test both xpath and jquery selector for me.
>
> Thanks in advance,
>
> Jian
>
>
>
> On Mon, Jul 20, 2009 at 6:04 PM, Jian Fang <[email protected]>wrote:
>
>> Please check if your UI module is fine, i.e., if "rotator.tnails[6]"
>> could be found . I tested on xpath and it seems working. Will check in the
>> test code later.
>>
>> Thanks,
>>
>> Jian
>>
>>
>> On Mon, Jul 20, 2009 at 5:51 PM, Manoj Chavan <[email protected]>wrote:
>>
>>> Sorry.. here is the entire exception...
>>>
>>>
>>> com.thoughtworks.selenium.SeleniumException: ERROR: Element
>>> //descendant-or-self::d...@class="thumbnails"]/descendant-or-self::ul/li[6]/descendant-or-self::a/parent::node()
>>> not found
>>> at
>>> com.thoughtworks.selenium.HttpCommandProcessor.throwAssertionFailureExceptionOrError(HttpCommandProcessor.java:97)
>>> at
>>> com.thoughtworks.selenium.HttpCommandProcessor.doCommand(HttpCommandProcessor.java:91)
>>> at
>>> com.thoughtworks.selenium.HttpCommandProcessor.getString(HttpCommandProcessor.java:262)
>>> at
>>> com.thoughtworks.selenium.DefaultSelenium.getAttribute(DefaultSelenium.java:495)
>>> 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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)
>>> at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)
>>> at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:1061)
>>> at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:892)
>>> at
>>> groovy.lang.DelegatingMetaClass.invokeMethod(DelegatingMetaClass.java:142)
>>> at groovy.lang.MetaObjectProtocol$invokeMethod.call(Unknown Source)
>>> at
>>> org.tellurium.dispatch.Dispatcher.invokeMethod(Dispatcher.groovy:26)
>>> at
>>> org.codehaus.groovy.runtime.callsite.PogoInterceptableSite.call(PogoInterceptableSite.java:46)
>>> at
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:43)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
>>> at org.tellurium.access.Accessor.getAttribute(Accessor.groovy:190)
>>> at org.tellurium.access.Accessor$getAttribute.call(Unknown Source)
>>> at
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:43)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:124)
>>> at
>>> org.tellurium.dsl.BaseDslContext$_getParentAttribute_closure79.doCall(BaseDslContext.groovy:1093)
>>> 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.codehaus.groovy.reflection.CachedMethod.invoke(CachedMethod.java:86)
>>> at groovy.lang.MetaMethod.doMethodInvoke(MetaMethod.java:234)
>>> at
>>> org.codehaus.groovy.runtime.metaclass.ClosureMetaClass.invokeMethod(ClosureMetaClass.java:272)
>>> at groovy.lang.MetaClassImpl.invokeMethod(MetaClassImpl.java:892)
>>> at
>>> org.codehaus.groovy.runtime.callsite.PogoMetaClassSite.call(PogoMetaClassSite.java:39)
>>> at
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:43)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
>>> at org.tellurium.object.UiObject.getAttribute(UiObject.groovy:117)
>>> at org.tellurium.object.UiObject$getAttribute.call(Unknown Source)
>>> at
>>> org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:43)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128)
>>> at
>>> org.codehaus.groovy.runtime.callsite.AbstractCallSite.callSafe(AbstractCallSite.java:96)
>>> at
>>> org.tellurium.dsl.BaseDslContext.getParentAttribute(BaseDslContext.groovy:1088)
>>> at
>>> test.BRHomePageTestCase.testRotatorWidget(BRHomePageTestCase.java:76)
>>>
>>>
>>> *From:* Jian Fang <[email protected]>
>>> *To:* [email protected]
>>> *Sent:* Monday, July 20, 2009 2:46:27 PM
>>> *Subject:* Re: getAttribute() question.
>>>
>>> Yes.
>>>
>>> On Mon, Jul 20, 2009 at 5:10 PM, Manoj Chavan <[email protected]>wrote:
>>>
>>>> Is this new method in the 0.7.0-SNAPSHOT ?
>>>>
>>>> Manoj
>>>>
>>>>
>>>> *From:* Jian Fang <[email protected]>
>>>> *To:* [email protected]
>>>> *Sent:* Monday, July 20, 2009 2:04:41 PM
>>>> *Subject:* Re: getAttribute() question.
>>>>
>>>> I added a general method
>>>>
>>>> def getParentAttribute(String uid, String attribute)
>>>>
>>>> to get back the parent attribute for any UI element. In your case
>>>>
>>>> getParentAttribute("rotator.tnails[6]", "class")
>>>>
>>>> should return the separator attribute. This method should be able to be
>>>> used for any other UI elements as well.
>>>> I haven't tested it, please check out the new 0.7.0 core artifact from
>>>> our Maven repo and help us to test if it works
>>>> for you. Please let me know the result.
>>>>
>>>> Thanks,
>>>>
>>>> Jian
>>>>
>>>> On Mon, Jul 20, 2009 at 4:45 PM, Jian Fang <[email protected]>wrote:
>>>>
>>>>> Usually, "rotator.tnails[6]" refers to the List element, not the
>>>>> separator. I will a new method for you to access
>>>>> the attribute for the List separator tonight. Will let you know after I
>>>>> check in the code.
>>>>>
>>>>> Thanks,
>>>>>
>>>>> Jian
>>>>>
>>>>>
>>>>> On Mon, Jul 20, 2009 at 3:49 PM, Manoj Chavan
>>>>> <[email protected]>wrote:
>>>>>
>>>>>>
>>>>>> My Source:
>>>>>>
>>>>>> <div class="thumbnails">
>>>>>> <ul>
>>>>>> <li class="thumbnail">
>>>>>> <img alt="Dan Henderson Ruins UFC's Hopes For UFC 105 and Michael
>>>>>> Bisping"
>>>>>> src="/images_root/image_pictures/0518/0180/127482_crop_85x60.jpg"/>
>>>>>> </li>
>>>>>> <li class="thumbnail">
>>>>>> <img alt="Underdog Sports: Best Pro Women Athletes Today No. 10-6"
>>>>>> src="/images_root/image_pictures/0517/9892/98173_crop_85x60.jpg"/>
>>>>>> </li>
>>>>>> <li class="thumbnail">
>>>>>> <img alt="The Chicago Cubs: My First MLB Game Pt.2; The Magic Of
>>>>>> Hatfeild Hotdogs!"
>>>>>> src="/images_root/image_pictures/0517/9210/100722_crop_85x60.jpg"/>
>>>>>> </li>
>>>>>> <li class="thumbnail">
>>>>>> </li>
>>>>>> <li class="thumbnail active">
>>>>>> <img alt="Boston Red Sox Weekly Recap (Week 15)"
>>>>>> src="/images_root/image_pictures/0518/0204/6839_crop_85x60.jpg"/>
>>>>>> </li>
>>>>>> <li class="thumbnail potd">
>>>>>> <div class="potd-icon png-fix"/>
>>>>>> <img alt="Browns Fans Want To See More Of Jerome Harrison, You're
>>>>>> Getting Your Wish"
>>>>>> src="/images_root/image_pictures/0517/9916/111034_crop_85x60.jpg"/>
>>>>>> </li>
>>>>>> </ul>
>>>>>> </div>
>>>>>>
>>>>>>
>>>>>> // My Module Def:
>>>>>> ui.Container(uid:"rotator",
>>>>>> clocator:[tag:"div",class:"thumbnails"]){
>>>>>> List(uid: "tnails", clocator: [tag: "ul"], separator:
>>>>>> "li"){
>>>>>> UrlLink(uid: "all", clocator: [:])
>>>>>> }
>>>>>> }
>>>>>>
>>>>>>
>>>>>>
>>>>>> I want to get the attribute of the [6] element.
>>>>>>
>>>>>> getAttribute("rotator.tnails[6]", "class") gives me no element
>>>>>> exception
>>>>>>
>>>>>> How do I define the module so that I get back the string "thumbnail
>>>>>> potd"
>>>>>>
>>>>>> Any help pointer appreciated. Thank you.
>>>>>>
>>>>>> Manoj
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>>
>>>>>
>>>>
>>>>
>>>>
>>>>
>>>>
>>>
>>>
>>>
>>> >>>
>>>
>>
>
--~--~---------~--~----~------------~-------~--~----~
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
-~----------~----~----~----~------~----~------~--~---