Я пытаюсь справиться с веб-разработкой BDD в Ruby с помощью огурца + капибара, и я упорно продолжен, что должно быть легкой задачей - только для проверки количества строк в таблице. Намерение того, чего я пытаюсь достигнуть, является чем-то вроде:
page.should have_xpath("//table[@id='myTable']")
find("//table[@id='myTable']/tr").length.should == 3
Но это не работает (длина отсутствующего метода), и я не могу найти способ утверждать против длины таблицы.
Любые идеи любой (снисходительно отнестись ко мне, хотя я - рубин nooby),
Заранее спасибо
Neil
В конце концов я согласился с этим:
Then /^I should see "(.*)" once$/ do |text|
within_table('myTable') do
should have_xpath("//tr", :text => text, :count => 1)
end
end
что казалось достаточно элегантным.
Я понимаю, что другие ответы работают, но это, кажется, хорошо читается.
Есть комментарии?
Думаю, вы можете это сделать:
page.should have_css("table#mytable tr", :count=>3)
Метод #find возвращает только один элемент (я думаю, что он возвращает только первый элемент, если есть несколько совпадений), поэтому вы не получите метод #length, потому что результатом #find является узел, а не массив.
Чтобы доказать это самому себе, попробуйте
puts find("//table[@id='myTable']/tr").class
То, что вам нужно, это #all, который вернет вам массив всех совпадающих узлов.