The last example

ui.Container(uid: "Link", clocator: [tag: "a"],respond : ['click']){
  TextBox(uid: "Bar", clocator: [tag: "span", text: "Bar", direct: "true"])
}

click "Link"

won't work because the definition of your "Link" will match both links in your 
document not just the one that contains the span with text "Bar".

If you modify it to include the group attribute as the following

ui.Container(uid: "Link", clocator: [tag: "a"],respond : ['click'], group: 
'true'){
  TextBox(uid: "Bar", clocator: [tag: "span", text: "Bar", direct: "true"])
}

Then it should work, however this to me is very ugly code (very typical of 
tools that autogenerate code) especially if you want to model both links. To me 
it would make more sense to model your example as

ui.Container(uid:'menu', clocator: [tag:'div', class:'menu']) {
  UrlLink(uid:'foo', clocator: [text: 'Foo'])
  UrlLink(uid:'bar', clocator: [text: 'Bar'])
}

which is a lot simpler and easier to read than the autogenerated code.

Regards,

Jonathan

On Jan 18, 2011, at 5:02 PM, Szewczyk Dratewka wrote:

> Now that you've mentioned it - you're right the text value should actually be 
> Foo despite the span element inside.
> And 
> 
> ui.UrlLink(uid: "TheLink",  clocator : [tag :"a", text: "Foo"]) 
> 
> does work. But yes, this is just a toy example - and I have to admit I didn't 
> test the above solution with it.
> I tried this solution with the real html I'm working on - didn't work - 
> probably because the * prefix was missing. Thank you for the tip.
> 
> But I guess still one question remains : why doesn't the code generated be 
> tellurium IDE work? Is it because 
> it is generated for tellurium 0.8.0?
> 
> Regards,
> dratewka
> 
> 
> 
> 
> 
> On Tue, Jan 18, 2011 at 4:42 PM, Jonathan Share <[email protected]> wrote:
> 
> On Jan 18, 2011, at 4:34 PM, Jonathan Share wrote:
> 
>> On Jan 18, 2011, at 1:49 PM, Szewczyk Dratewka wrote:
>> 
>>> Thanks, setting the values to false gets the test working. I didn't know 
>>> that using 
>>> tellurium engine and css selectors had implications on using xpath. This 
>>> makes me think
>>> that maybe I don't have to use xpath at all. Till now I've been trying to 
>>> use it to solve a case
>>> in which there is a bunch of links like so:
>>> 
>>> <div class='menu'>
>>>     <a href="http://www.foo.com";><span>Foo</span></a>
>>>     <a href="http://www.bar.com";><span>Bar</span></a>
>>> </div>
>>> 
>>> and I want to get the foo link. Now if there was no <span> inside, I could
>>> just use
>>>  ui.UrlLink(uid: "TheLink",  clocator : [tag :"a", text : "Foo"])
>>> 
>>> but the <span> makes it more difficult. Obviously I can use xpath to do 
>>> this, but
>>> is there a better alternative?
>> 
>> 
>> Did you actually try this definition? The check for text tests against the 
>> textContent of an element. The textContent of your <a> element is still 
>> "Foo" even though there is also a <span> in the dom.
>> 
>> If this a reduced example and the actual dom has whitespace between the 
>> elements then you might need to use the definition;
>> 
>> ui.UrlLink(uid: "TheLink",  clocator : [tag :"a", text : "*Foo"])
>> 
>> in order to match the link that contains the text Foo.
>> 
>> Another alternative solution (if the order of the links i guaranteed) would 
>> be;
>> 
>> ui.Container(id:'menu', clocator:[tag:'div', 'class': 'menu') {
>>   UrlLink(id:'foo', clocator: [position: '1'])
>> }
>> 
>> click 'menu.foo'
>> 
>> Which will then click on the first link in the containing element. 
>> 
>> Regards,
>> 
>> Jonathan
> 
> A third option, and possibly the best as it doesn't tie you to the 
> localisation of the site under test, would be to match against the href 
> attribute of the link of possible
> 
> ui.UrlLink(uid: "TheLink",  clocator : [tag :"a", href : "*foo.com"])
> 
> -- 
> 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