TangibleDream
TangibleDream

Reputation: 611

How do I attach a file when the input.file has a dynamic id?

I have run into a snag with dynamic ids. The attach_file command needs the id name of the input type="file". The problem is that the id is dynamic

(id="document_22") #indicating the 22nd document uploaded to this section.

Is there a way to get the id of an element? something like...

attach_file(find(:xpath, ".//input[@name='file_upload']").get('@id'),
'C:\\Users\\testbox\\Documents\\testdoc.xls')

Upvotes: 2

Views: 1333

Answers (2)

Andrei Botalov
Andrei Botalov

Reputation: 21096

attach_file internally just passes filename to Capybara::Node::Element#set method.

So you can use:

find(:xpath, ".//input[@name='file_upload']").set(filename)

Upvotes: 8

Justin Ko
Justin Ko

Reputation: 46836

You can get the attribute of an element by doing:

element['attribute_name']

So for your example, to get the id attribute of the input with name 'file_upload', you can do:

find(:xpath, ".//input[@name='file_upload']")['id']
#=> "document_22"

Upvotes: 1

Related Questions