3

我想打印位于跨度中的错误消息的内容,看起来像这样:

<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')

然而,这并没有真正起作用。谷歌搜索一个小时后,我找不到任何有用的东西,这也可能是因为我对这一切都很陌生。

我基本上是想调试的,所以我想看看实际的内容是什么。这也将有助于未来的努力。

4

4 回答 4

6

你可以text反对那个。

puts page.find('.error-msg span').text

http://rubydoc.info/github/jnicklas/capybara/master/Capybara/Node/Element

于 2013-02-25T14:51:29.303 回答
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。(Capybara::ExpectationNotMet)

翻译:“.error-msg span”中的文本是“bar”而不是“foo”

于 2013-02-25T15:44:31.187 回答
0

您也可以使用它,因为您只需要验证该范围内的文本:

Then /^I should see (.+) as content in xpath "([^"]*)"$/ do |content, xpath|
  assert page.find(:xpath, xpath + "[contains(string(), '" + content +"')]")
end

给出您的跨度的 xpath。它仅适用于字符串

于 2013-02-26T07:09:09.033 回答
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在将来添加到任何步骤定义的末尾以输出元素文本

于 2015-05-11T11:49:59.383 回答