Капибара, находящаяся внутри элемента CSS - PullRequest
16 голосов
/ 17 ноября 2011

Я работаю с Ruby on Rails 3, Cucumber и Capybara

Я довольно долго искал и не могу понять, как найти определенный элемент страницы в теге css. В моем случае мне нужно убедиться, что имя найдено внутри таблицы, а не в «Welcome [Name]».

Я пробовал что-то вроде:

within('table') do
  page.body.index("[Name]")
end

И у меня есть таблица с id='table'.

Но я хотел бы знать, как это сделать для любого элемента CSS, например:

within('h2') do
  page.body.should have_content ('stuff')
end

Я думаю, что моя проблема связана с page.body, но я не уверен, как включить его в определенный тег css.

Заранее спасибо!

Ответы [ 4 ]

32 голосов
/ 17 ноября 2011

Сопоставитель within Капибары соответствует только первому результату, поэтому, если у вас есть несколько тегов h2, он будет выглядеть только в первом.

Вместо этого попробуйте have_css с опцией :text.

page.should have_css("#table", :text => "[Name]")
page.should have_css('h2', :text => 'stuff')
12 голосов
/ 17 ноября 2011

Чтобы найти определенный элемент:

page.find('#table').should have_text('stuff')
3 голосов
/ 21 декабря 2016

Я думаю, что все ответы должны работать, но теперь Capybara не использует, если он больше использует, ожидайте

expect(page).to have_css("#table", :text => "[Name]")
expect(page).to have_css('h2', :text => 'stuff')
0 голосов
/ 15 февраля 2012

Я сделал такие вещи: page.all(:css, 'button.btn-primary.days.active').size.should == 1

Чтобы проверить, есть ли какие-либо элементы, которые содержат определенный набор классов.
Мне не нужно было искать конкретное текстовое значение элемента, хотя. Я просто хотел обеспечить существование элемента и сколько их было.

...