我可以在没有ID或类名的情况下使attach_file工作吗?

时间:2017-03-28 20:49:17

标签: selenium rspec capybara

标记看起来完全像这样:

<input type="file">

有没有办法让attach_file使用它?

与此同时,我已经让开发人员为我添加了一个ID,但我尽量避免任何特殊要求。

1 个答案:

答案 0 :(得分:2)

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对文件的存在测试