I've previously proposed both #1 and #3. In theory people like the idea. But mostly people hate the idea of the compatibility problems these would introduce. And looking at all the tests we have here at Convio, I see the same problem. If these kinds of changes were made in Watir 2.0, we would not be able to use it.
Bret On Fri, May 7, 2010 at 10:42 AM, Jarmo <[email protected]> wrote: > Hello. > > I have exchanged some e-mails with Jari recently about Watir WebDriver > (and Watir 2.0) and have come up with at least > three proposals, which would change the current API a little by making > tests better, thus I would bring them up in here also. > > Feel free to express yourself :) > > 1) Default locator for all elements should be :index => 0 > > I'm finding myself very often clicking links on the table with random > identifiers. Consider a table like this: > > <table id="table_id"> > <tr> > <td>Something</td> > <td><a href="#" onclick=delete(somerandomid)>Delete</a></td> > </tr> > <tr> > <td>Something else</td> > <td><a href="#" onclick=delete(somerandomid)>Delete</a></td> > </tr> > </table> > > Now, if i want to delete "Something else", then > currently i have to do something like this: > > product = b.table(:id => "table_id").rows.find {|row| row.text == > "Something else"} > product.link(:index => 1).click > > With my proposal it would be like this: > product = b.table(:id => "table_id").rows.find {|row| row.text == > "Something else"} > product.link.click > > And with the possibility (from Google Wave about Watir 2.0 by Jari) to > use locators for collections: > product = b.table(:id => "table_id").trs(:text => "Something else").first > product.link.click > > > > 2) Selenium has a lot of different ways of locating elements. This is > not what i would like to see in > Watir and as i understand then most of you in here also think like > that. But i think that it would > be great if ALL elements would accept one String as an identifier, > which would be used to locate an > element first by id and then by name. No exceptions - it would be the > same for every element. > > For example: > b.text_field("blah").set "my text" # would search text fields with ID > and if not found then by NAME and if still not found > # would raise exception > > I'm asking this because most of the time i have to use ID or NAME (in > that order) to locate > elements, which means that my tests are full of method(:id => 'xxxx') > and method(:name => 'sfdas'). Would be great if there would be > less code. > > Wouldn't it make sense to add this functionality then? > > > > 3) Allow only hash syntax for element locators (+ String in proposal > #2). So, text_field(:id, 'sfdsa') is not allowed anymore. Why? > Well, it's again to have less syntax for finding elements and you can > use only hash when using multiple identifiers anyway. > Especially newcomers might get confused if at one place they read > text_field(:id => 'sfdsa') and other place comma > is used. > > I think that since it is going to be a major release then some > backwards incompatibilities are allowed, no? > > > Jarmo > _______________________________________________ > Wtr-development mailing list > [email protected] > http://rubyforge.org/mailman/listinfo/wtr-development > -- Bret Pettichord Lead Developer, Watir, www.watir.com Blog, www.io.com/~wazmo/blog Twitter, www.twitter.com/bpettichord
_______________________________________________ Wtr-development mailing list [email protected] http://rubyforge.org/mailman/listinfo/wtr-development
