Ответ 1
Итак, я просто столкнулся с подобным, и я думаю, что происходит:
Это зависит от кода, который вы не указали здесь, как вы посещаете страницу. Я пишу спецификацию запроса rspec.
Если я получаю страницу с помощью rspec own:
get '/some/path'
then response.body.should have_selector работает, как вы говорите, но page.should does not.
Чтобы сделать работу страницы Capybara (и сделать взаимодействия Capybara, такие как click_button или fill_in), вместо того, чтобы получать с помощью rspec 'get', вам нужно получить с помощью Capybara 'visit':
visit '/some/path'
page.should have_selector("works")
'page', метод capybara, устанавливается только при использовании "посещения", метода capybara.
Это запутывает, все смешивание и сопоставление различных библиотек, участвующих в тестировании рельсов.