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")