Capybara, находящийся внутри элемента css
Я работаю с Ruby on Rails 3, Cucumber и Capybara
Я искал довольно много времени, и я не могу понять, как найти определенный элемент страницы в теге css. В моем случае мне нужно убедиться, что имя найдено внутри таблицы, а не в "Приветствие [Имя]".
Я пробовал что-то вроде:
within('table') do
page.body.index("[Name]")
end
И у меня есть таблица с id='table'
.
Но я хотел бы знать, как это сделать для любого элемента css, например:
within('h2') do
page.body.should have_content ('stuff')
end
Я думаю, что моя проблема связана с page.body, но я не уверен, как скрыть ее к определенному тегу css.
Спасибо заранее!
Ответы
Ответ 1
Матч Capybara within
соответствует только первому результату, поэтому, если у вас несколько тегов h2
, он будет выглядеть только в первом.
Вместо этого попробуйте have_css
с опцией :text
.
page.should have_css("#table", :text => "[Name]")
page.should have_css('h2', :text => 'stuff')
Ответ 2
Чтобы найти конкретный элемент:
page.find('#table').should have_text('stuff')
Ответ 3
Я думаю, что все ответы должны работать, но теперь Capybara не использует больше, он использует ожидание
expect(page).to have_css("#table", :text => "[Name]")
expect(page).to have_css('h2', :text => 'stuff')
Ответ 4
Я сделал такие вещи:
page.all(:css, 'button.btn-primary.days.active').size.should == 1
Проверить, есть ли какие-либо элементы, содержащие определенный набор классов.
Однако мне не нужно было искать определенное текстовое значение элемента.
Я просто хотел обеспечить существование элемента и сколько их было.