问题
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')
回答1:
attach_file internally just passes filename to Capybara::Node::Element#set method.
So you can use:
find(:xpath, ".//input[@name='file_upload']").set(filename)
回答2:
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"
来源:https://stackoverflow.com/questions/15165455/how-do-i-attach-a-file-when-the-input-file-has-a-dynamic-id