/Interface \d/
'un sayfada üç kez oluştuğunu biliyorum. Ama bunun için Salatalık'ta Capibara ile nasıl test edeceğimi bilmiyorum.Capybara (veya Webrat, sanırım) ve Salatalık kullanarak bir sözcüğün birden fazla oluşumu nasıl kontrol edilir?
Then /^(?:|I)should see \/([^\/]*)\/ (\d+)(?:x|X| times?)?$/ do |regexp, count|
regexp = Regexp.new(regexp)
count = count.to_i
if page.respond_to? :should
page.should have_xpath('//*', { :text => regexp, :count => count })
else
assert page.has_xpath?('//*', { :text => regexp, :count => count })
end
end
Ancak, bu benim Then I should see /Interface \d+/ 3 times
için false döndürür: İşte benim ilk girişimdi.
Bunun nedeninin, has_xpath
'un all
kullanmasından kaynaklandığını öğrendim. Benim testte bu koyarak:
puts all(:xpath, '//*', { :text => regexp}).map {|e| pp e}
sonuçları
#<Capybara::Element tag="html" path="/html">
#<Capybara::Element tag="body" path="/html/body">
#<Capybara::Element tag="div" path="/html/body/div">
#<Capybara::Element tag="div" path="/html/body/div/div[2]">
#<Capybara::Element tag="table" path="/html/body/div/div[2]/table">
#<Capybara::Element tag="tbody" path="/html/body/div/div[2]/table/tbody">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[1]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[1]/td[3]">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[2]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[2]/td[3]">
#<Capybara::Element tag="tr" path="/html/body/div/div[2]/table/tbody/tr[3]">
#<Capybara::Element tag="td" path="/html/body/div/div[2]/table/tbody/tr[3]/td[3]">
Yani benim metin içeren unsurlara yol boyunca her adımda sayımını alıyorum. : - \
Belki de has_content
'un beni kurtaracağını düşünmüştüm ama bir sayı kabul etmiyor.
Yardım! Böyle
İki nedenleri: 1) kırılgan. Şu anda bunlar
Yeterince adil ... Css seçici önerisini kaldırdım. – Zubin
İlgili konular