当input.file具有动态ID时,如何附加文件?

时间:2013-03-01 19:34:47

标签: ruby file-upload cucumber capybara

我遇到了动态ID问题。 attach_file命令需要输入type =“file”的id名称。问题是id是动态的

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

有没有办法获取元素的id?类似......

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

2 个答案:

答案 0 :(得分:8)

attach_file内部只是将文件名传递给Capybara::Node::Element#set方法。

所以你可以使用:

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

答案 1 :(得分:1)

您可以通过执行以下操作获取元素的属性:

element['attribute_name']

因此,对于您的示例,要获取名为“file_upload”的输入的id属性,您可以执行以下操作:

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