水豚无法找到 is/is 未禁用的字段(文本条目)

Capybara unable to find field (text entry) that is/is not disabled

将 Capybara 与 Cucumber(和 Selenium)一起使用,我看到两种截然不同的自相矛盾的反应,我有点迷茫。

正在尝试:

find_field('SANDBOX_FIELD_USERNAME', {disabled: true}).set(username)

如果 disabled 设置为 true 那么我得到

Unable to find field "SANDBOX_FIELD_USERNAME" that is disabled (Capybara::ElementNotFound)

但是如果 disabled 设置为 false 我得到

Unable to find field "SANDBOX_FIELD_USERNAME" that is not disabled (Capybara::ElementNotFound)

我环顾四周,但找不到其他人描述这个问题,所以我确定它一定是我遗漏的东西,但任何人都可以阐明这可能是如何发生的吗?

Capybaras find_field 通过 ID、名称、占位符或关联的标签文本查找表单字段。由于 "SANDBOX_FIELD_USERNAME" 是您尝试填写的元素中的 none,因此找不到该字段。你可以做

fill_in('Username', with: username)

匹配占位符文本,设置值与

基本一致
find_field('Username').set(username)

您也可以这样做:

page.fill_in :placeholder => 'Username', with: 'some_name'