Mechanize: find form with 'id' rather than 'name'?

This is what I am doing:

my_form = doc.forms.with.name(formname).first

This is what I want:

my_form = doc.forms.with.id(id_string).first

but somehow Mechanize does not like it.

Maybe because id collides with Object.id?

My problem is that the from does not have a ‘name’ attribute in the
html - so apparently I can not use that to locate it - therefore I would
like to use ‘id’ - or what else should I do?

Thanks,
Peter

__
http://www.rubyrailways.com

On Jan 31, 2007, at 5:18 AM, Peter S. wrote:

My problem is that the from does not have a ‘name’ attribute in
the html - so apparently I can not use that to locate it -
therefore I would like to use ‘id’ - or what else should I do?

I haven’t dug into the Ruby Mech yet, but the Perl version lets you
pick the Nth form on the page.

On Jan 31, 2007, at 8:44 AM, Andy L. wrote:

On Jan 31, 2007, at 5:18 AM, Peter S. wrote:

My problem is that the from does not have a ‘name’ attribute in
the html - so apparently I can not use that to locate it -
therefore I would like to use ‘id’ - or what else should I do?
I haven’t dug into the Ruby Mech yet, but the Perl version lets you
pick the Nth form on the page.

Ruby’s should have a Page#forms that works like an array.

On Wed, Jan 31, 2007 at 08:18:37PM +0900, Peter S. wrote:

Maybe because id collides with Object.id?

My problem is that the from does not have a ‘name’ attribute in the
html - so apparently I can not use that to locate it - therefore I would
like to use ‘id’ - or what else should I do?

Here’s at least one way:
if doc is your instance of WWW::Mechanize:
my_form = (doc.page/:form).find { |elem| elem[‘id’] == id_string }

(Of course if you did doc = mech_instance.page, then it’s
(doc/:form).find …)

Mat S. wrote:

On Jan 31, 2007, at 8:44 AM, Andy L. wrote:

On Jan 31, 2007, at 5:18 AM, Peter S. wrote:

My problem is that the from does not have a ‘name’ attribute in the
html - so apparently I can not use that to locate it - therefore I
would like to use ‘id’ - or what else should I do?
I haven’t dug into the Ruby Mech yet, but the Perl version lets you
pick the Nth form on the page.

Ruby’s should have a Page#forms that works like an array.
Yeah, you can do

my_form = doc.forms[0]

but all I have is the id attribute of the form I am looking for. (i.e.
not the index of the form I am looking for).

So currently I am looping through all the forms and comparing the
current form’s id (through form_node.attributes[‘id’]) with the id I am
looking for.

Is there a better way to do this? Or is this OK?

Peter

__
http://www.rubyrailways.com