Проверка отсутствия элемента с помощью WebRat
-
06-07-2019 - |
Вопрос
Следующее работает отлично:
Then /^I should see a button called "([^\"]*)"$/ do |name|
response.should have_selector("li") do |li|
li.should have_selector("a") do |a|
a.should contain(name)
end
end
end
Теперь мне нужно дополнить это следующим шагом:
Then /^I should not see a button called "([^\"]*)"$/ do |name|
[snip...]
end
Стандартное «И я не должен видеть» неудовлетворительно, поскольку оно улавливает целевую фразу в любом месте страницы, а не только внутри кнопок.Мне специально нужно проверить, нет ли кнопок с целевым текстом.
Моим первым инстинктом было попробовать что-то вроде этого:
Then /^I should see a button called "([^\"]*)"$/ do |name|
response.should have_selector("li") do |li|
li.should have_selector("a") do |a|
a.should_not contain(name)
end
end
end
Но, конечно, это пройдет до тех пор, пока на странице есть какая-либо кнопка, не содержащая целевой текст, даже если есть также одна или несколько кнопок, включающих целевой текст.
Твои мысли?
Большое спасибо,
Стивен.
Решение 2
Задача решена!Я дал каждому контролю класс «контроля», затем написал это определение шага:
Then /^I should not see a control called "([^\"]*)"$/ do |name|
response.should have_selector("a.control", :content => name, :count
=> 0)
end
Конечно, это предполагает, что я счастлив, давая им всем класс «контроля» ...
с.
Другие советы
Вы можете использовать assert_not_contain
(и возможно not_contain
но я в этом сомневаюсь, так как этого нет в РДОК).
a.should assert_not_contain(name)
Ваши кнопки на самом деле являются ссылками?Для кнопок (где есть значение отправки) я использую:
assert_have_selector "input[type=submit][value=\"#{text}\"]"
и:
assert_have_no_selector "input[type=submit][value=\"#{text}\"]"
хт.