I think you may have misunderstood. I am not talking about anything at
the java level when i say a locator cannot return multiple elements.
at the selenium js level, a locator can only return 1 element, except
for the table locator, but that is a special case, and uses a subset
of selenium-core methods not used by the rest of the locators.
so, let us agree that any locator must return a single element, unless
we heavily modify selenium-core (i think it will take a rewrite).

so, currently all tellurium locators return a single element.
my new methods work best if you pass in a jquery selector that will
select multiple elements. Under the hood, i added a new location
strategy, ie a new locator which actually returns multiple elements,
but it is only used by my user-extension methods, so it does not break
anything.

so, it looks to me that we cannot add my new methods to any UiObjects
because every UiObject provides a locator, as you mentioned above, and
these locators can only return a single element.
Ofcourse, my new methods can remain as methods of DslContext, and
maybe that is the right thing to do for now.

to illustrate what i mean, here is the user-extension for one of the
methods:

Selenium.prototype.getSelectorText = function(jq){
        var e = this.browserbot.findElement("jqueryall="+jq); //use a custom
locator that returns a jquery wrapped set given a jquery selector
        var out = [];
        for(var i = 0; i < e.length; i++){ //iterate over the entire wrapped
set, and collect information into an array
                out.push($(e[i]).text()); //using jquery
        }
        return JSON.stringify(out); //stringify the list and return to client
where it will be parsed back into a list
};

i see a lot of power in being able to craft a jquery selector that
selects multiple elements, and gathering information from ALL of them
in one call.


On Dec 3, 1:20 pm, [EMAIL PROTECTED] wrote:
> The UiObject contains one locator, which could be BaseLocator,
> CompositeLocator,
> or the JQueryLocator you define. It is fine to return an array of
> objects from
> one locator. For example, you may return an ArrayList for a table row
> and you
> still use the table's locator and pass in the row number as another
> parameter.
> Under the hood, either the Table or the JQuery at selenium core will
> handle how
> to select multiple UI elements. As a result, the multiple UI elements
> would not
> be exposed to the DslContext layer, i.e., users.
>
> I do not know if I understand your questions correctly or not. Could
> you give some examples here
> for us to discuss further?
>
> Thanks,
>
> Jian
>
> On Dec 3, 11:56 am, Mikhail Koryak <[EMAIL PROTECTED]> wrote:
>
> > Ive extended DslContext to support the following calls:
>
> > def ArrayList getSelectorProperties(String jqSelector, List<String>
> > props)
> > def ArrayList getSelectorText(String jqSelector)
> > def Object getSelectorFunctionCall(String jqSelector, String fn)
>
> > the first function takes a jquery selector, and a list of DOM
> > properties to gather, and returns an array list of hashmaps containing
> > a mapping of the given propeties to their values in the DOM elements
> > selected by the given jquery
>
> > the second function returns an array list of strings where each string
> > is the text of each element selected by the jquery
>
> > the last function is a genetic function that takes jquery selector and
> > a String contain a javascript function which will be called with the
> > context of the wrapped set selected by the jquery selector (ie 'this')
> > and must return json which will be returned as either a HashMap or
> > ArrayList
>
> > I think these 3 functions give us a foundation to build any imaginable
> > call that can return any number of values.
>
> > The only problem i see with the current setup is that it can not be
> > used with the current UiObjects which already contain locators, but
> > these locators only select a single element, and are not as useful as
> > full fledged jquery locators.
> > Do you have any thoughts on how to make this functionality work more
> > in line with the framework?
--~--~---------~--~----~------------~-------~--~----~
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