我可以让 attach_file 在没有 ID 或 class 名字的情况下工作吗?

Can I get attach_file to work without an ID or class name?

标记看起来完全像这样:

<input type="file">

有什么方法可以让 attach_file 使用它吗?

在此期间,我已经要求开发人员为我添加一个 ID,但我尽量避免任何特殊要求。

Capybara 的 #attach_field 基本上可以归结为 find(:file_field, locator, options).set(path),它将通过 ID、名称或关联的标签文本进行查找。但是,如果您以另一种方式找到该元素,则只需使用路径对其调用 #set 即可。另一件需要注意的事情是(使用最新版本的 Capybara)如果您在页面上只有一个文件字段,或者您被限制在只有一个文件字段的页面区域,您可以将 nil 作为定位器,它只会找到 'file'.

类型的任何输入

所以

attach_file(nil, 'test.txt')

等同于

find('input[type="file"]').set('text.txt')

除了带有 set 的示例将跳过 Capybara 对文件的存在性测试