Testing Capybara::ElementNotFound当元素清楚地显示在页面上时

Testing Capybara::ElementNotFound当元素清楚地显示在页面上时,testing,capybara,Testing,Capybara,我目前正试图修复一个水豚错误,它是从哪里冒出来的。这导致我所有的考试都不及格。这些测试用于工作,我不确定发生了什么变化,因为错误没有多大意义 错误 Unable to find visible field "Username" that is not disabled (Capybara::ElementNotFound) 我从中获得的HTML放在page.body上,并保存和打开页面 <div class="login-field"> <span><i c

我目前正试图修复一个水豚错误,它是从哪里冒出来的。这导致我所有的考试都不及格。这些测试用于工作,我不确定发生了什么变化,因为错误没有多大意义

错误

Unable to find visible field "Username" that is not disabled (Capybara::ElementNotFound)
我从中获得的HTML放在page.body上,并保存和打开页面

<div class="login-field">
   <span><i class="fa fa-user fa-lg"></i></span>
   <span><input autofocus="autofocus" placeholder="Username" type="text" name="user[username]" id="user_username"></span>
</div>
<div class="login-field">
   <password-entry the-id="user_password" name="user[password]" placeholder="Password" show-lock="true"></password-entry>
 </div>
我尝试过按id进行查找和查找。我认为错误一定比未找到元素更深,因为它显然正在渲染元素。请尝试使用:

find('css', visible: false).set("your text")

您是否使用了
save_和\u open_屏幕截图
来验证您希望看到的实际上是什么?您使用的是什么版本的水豚?水豚最近唯一真正改变的可能影响这一点的是禁用的字段集——这些输入是否恰好位于字段集元素内部?如果您没有更改内置的
:filleble_字段
选择器(
Capybara.add_selector
Capybara.modify_selector
),则任何类型的作用域(
中的
等)中的
fill_in
调用也会出现然后所提供的信息就没有任何意义了——如果你问题中的HTML实际上是测试运行时页面上的可见元素(没有被一些JS小部件替换),那么应该找到它们(只需在填充之前加上长时间睡眠,然后使用浏览器中的开发者控制台检查页面以确认).Oh——另一个可能的情况是,如果字段是具有
隐藏属性的包装元素的后代。geckodriver/FF的某些版本错误地返回子体不可见,即使修改了
display
属性,从而覆盖了
hidden
属性。我认为这在最近的geckodriver/FF中得到了修复。屏幕截图是浏览器的当前状态-因此,如果显示的是灰色控件(不清楚“是灰色的”是什么意思)这就是你的问题所在-
save_和_open_page
对调试某些东西很有用,但不能准确显示页面的全部当前状态。暂停/休眠测试,然后与正在测试的浏览器交互通常是实际调试问题的最佳方式。
find('css', visible: false).set("your text")