水豚:如何测试页面标题?


Answers:


102

自从水豚2.1.0版本以来,会话中就存在处理标题的方法。你有

page.title
page.has_title? "my title"
page.has_no_title? "my not found title"

因此,您可以像这样测试标题:

expect(page).to have_title "my_title"

根据github.com/jnicklas/capybara/issues/863,以下内容也适用于capybara 2.0

expect(first('title').native.text).to eq "my title"

14

这可以在Rails 3.1.10,Capybara 2.0.2和Rspec 2.12下运行,并允许匹配部分内容:

find('title').native.text.should have_content("Status of your account::")

1
谢谢!我实际上用它来修补水豚,请参阅下面的答案。
杰克

13

您应该能够搜索该title元素以确保其包含所需的文本:

page.should have_xpath("//title", :text => "My Title")

我收到失败/错误:page.should have_xpath(“ // title”,“ home”)参数数量错误(3个代表2)
Nerian

代码是:场景“用户已登录并可以看到他的主页”,进行visit('/')page.should have_xpath(“ // title”,“ home”)结尾
Nerian 2011年

糟糕,忘记了第二个参数应该是哈希值...检查我的修改后答案。
Dylan Markow

我真的不想发布这个答案,尽管我觉得可能是这样(我知道这不是很红宝石的东西)。 page.should have_content('<title>Your Title</title>')
塔斯(Tass),

8
该代码在capybara
Mic92 2012年

3

我将此添加到我的规范助手中:

class Capybara::Session
  def must_have_title(title="")
    find('title').native.text.must_have_content(title)
  end
end

然后我可以使用:

it 'should have the right title' do
  page.must_have_title('Expected Title')
end

这是对规范助手的一个很好的补充!
jpw

2

使用RSpec可以轻松得多地测试每个页面的标题。

require 'spec_helper'

describe PagesController do
  render_views

  describe "GET 'home'" do
    before(:each) do
      get 'home'
      @base_title = "Ruby on Rails"
    end

    it "should have the correct title " do
      response.should have_selector("title",
                                :content => @base_title + " | Home")
    end
  end
end

2
那比page容易。have_xpath(“ // title”,:text =>“我的标题”)?
迈克·布莱思

1
在控制器测试中渲染视图不是我的工作。我投票赞成使用集成测试(和水豚)来验证标题。
Grimmo '04

2
capybara 2,仅接受:text而不接受:content作为参数。标题标签的内容无法使用最新的水豚进行检查:github.com/jnicklas/capybara/issues/863
Mic92 2012年

2

为了使用Rspec和Capybara 2.1测试页面标题,可以使用

  1. expect(page).to have_title 'Title text'

    另一个选择是

  2. expect(page).to have_css 'title', text: 'Title text', visible: false
    由于Capybara 2.1的默认值为Capybara.ignore_hidden_elements = true,并且由于title元素不可见,因此您需要选择visible: false搜索以包括不可见的页面元素。


0

您只需要将设置subjectpage,然后为该页面的title方法编写一个期望值:

subject{ page }
its(:title){ should eq 'welcome to my website!' }

在上下文中:

require 'spec_helper'

describe 'static welcome pages' do
  subject { page }

  describe 'visit /welcome' do
    before { visit '/welcome' } 

    its(:title){ should eq 'welcome to my website!'}
  end
end

-1

it { should have_selector "title", text: full_title("Your title here") }

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.