我想打印位于跨度中的错误消息的内容,看起来像这样:
<span>Es exisitiert bereits ein Account mit dieser E-Mail Adresse. Wenn Sie sich sicher sind, dass dies Ihre Adresse ist, dann klicken Sie <a href="https://link-removed.com">hier</a> um das Passwort und den Zugang zu Ihrem Account zu erhalten.</span>
在我的步骤定义中,我尝试了以下
print page.find('.error-msg span')
然而,这并没有真正起作用。谷歌搜索了一个小时后,我找不到任何有用的东西,这也可能是因为我对这一切都很陌生。
我基本上想调试,所以我想看看实际内容是什么。它对未来的努力也很有帮助。
答案 0 :(得分:6)
您可以针对该号码致电text
。
puts page.find('.error-msg span').text
http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element
答案 1 :(得分:0)
您应该使用rspec匹配器来通过或通过错误。这样做会在页面上打印出有用的信息。
Given I visit a page
Then I should see "foo" in ".error-msg span"
Then /^I should see "([^\"]*)" in "([^\"]*)"$/ do |text, css|
page.should have_selector(tag, text: text )
end
如果你使用它并且页面上有一个'.error-msg span'元素,如果文本与你的预期不符,那么Capybara显示的错误信息将告诉你选择器里面的内容。例如:
expected to find css ".error-msg span" with text "foo" but there were no matches. Also found "Bar", which matched the selector but not all filte
RS。 (水豚:: ExpectationNotMet)
翻译:'。error-msg span'里面的文字是“bar”而不是“foo”
答案 2 :(得分:0)
您也可以使用它,因为您只需要验证该范围内的文本:
Then /^I should see (.+) as content in xpath "([^"]*)"$/ do |content, xpath|
assert page.find(:xpath, xpath + "[contains(string(), '" + content +"')]")
end
给出span的xpath。它适用于Strings Only
答案 3 :(得分:0)
您可以尝试这种方法。将文件elements.rb添加到您的支持文件夹并在其中包含:
def text(type=nil)
type ||= :all unless Capybara.ignore_hidden_elements or Capybara.visible_text_only
synchronize do
if type == :all
base.all_text
else
base.visible_text
end
end
end
然后按如下所示编写步骤定义(示例):
within(:id, "") do
page.should have_content("")
puts text
end
end
您可以在将来的任何步骤定义的末尾添加puts text
以输出元素文本