ein Element Überprüfung fehlt webrat mit
-
06-07-2019 - |
Frage
Die folgenden funktioniert gut:
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
Jetzt muss ich es mit einem Schritt wie folgt ergänzen:
Then /^I should not see a button called "([^\"]*)"$/ do |name|
[snip...]
end
Der Standard „Und ich soll nicht sehen“ ist nicht zufrieden stellend, da es überall die Zielphrase auf der Seite abholt - nicht nur innerhalb Tasten. Ich muß speziell überprüfen, dass keine Taste mit dem Zieltext vorhanden ist.
Mein erster Instinkt war zu versuchen, etwas wie folgt aus:
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
Aber das ist natürlich so lange passieren wird, wie es irgendeine Taste auf der Seite, die nicht den Zieltext nicht enthalten, auch wenn es auch eine oder mehr Tasten, die den Zieltext tun umfassen.
Ihre Gedanken?
Vielen Dank,
Steven.
Lösung 2
Problem gelöst! Ich habe jede eine Klasse von „Kontrolle“ zu steuern, dann schrieb dieser Schritt Definition:
Then /^I should not see a control called "([^\"]*)"$/ do |name|
response.should have_selector("a.control", :content => name, :count
=> 0)
end
Natürlich ist dies setzt voraus, ich bin glücklich, indem sie ihnen eine ganze Klasse von "Kontrolle" ...
s.
Andere Tipps
Sie können mit assert_not_contain
(und vielleicht not_contain
aber ich bezweifle es, da es nicht in der rdoc ist ).
a.should assert_not_contain(name)
Sind Ihre Tasten eigentlich Links? Bei Schaltflächen (wo es einen einreichen Wert ist), benutze ich:
assert_have_selector "input[type=submit][value=\"#{text}\"]"
und
assert_have_no_selector "input[type=submit][value=\"#{text}\"]"
hth.