Capybara, проверка элемента HTML по идентификатору и классу

Два вопроса от новичка.

Q1- Можно ли утверждать существование HTML node по идентификатору и классу? Например, чтобы увидеть, существует ли следующий элемент:

<div class="drawer" id="first"....>

Я видел, что вы можете использовать что-то вроде:

 page.should have_css('div.drawer')
 page.should have_css('div#first')

но можем ли мы как-то запросить существование обоих параметров, я пробовал следующее и не работал:

page.should have_selector("div", :class => "drawer", :id => "first")

Q2- Можно ли добавить 2 селектора в метод "внутри" capybara, т.е. я видел, что вы можете ограничить область действия, выполнив:

within("//div[@id='first']") do

но мы можем отфильтровать этот DIV, добавив id = 'first' и class= 'drawer' каким-то образом?

Большое спасибо!

Ответы

Ответ 1

Вы можете комбинировать селектор.

Для вашего первого вопроса следующие проверки для div с идентификатором "first" и "drawer" класса:

page.should have_css('div#first.drawer')

Для вашего второго вопроса блок within может использовать один и тот же css-селектор, как указано выше:

within('div#first.drawer') do

Или, если вы действительно предпочитаете xpath, вы можете сделать:

within("//div[@id='first' and @class='drawer']") do

Хорошая ссылка для css-селекторов: http://www.w3.org/TR/CSS2/selector.html