Капибара: Как проверить заголовок страницы? - PullRequest
68 голосов
/ 26 февраля 2011

В приложении Rails 3, использующем Steak, Capybara и RSpec, как проверить заголовок страницы?

Ответы [ 8 ]

100 голосов
/ 03 января 2013

Начиная с версии 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 следующеетакже работает с капибарой 2.0 :

expect(first('title').native.text).to eq "my title"
14 голосов
/ 07 февраля 2013

Это работает в Rails 3.1.10, Capybara 2.0.2 и Rspec 2.12 и позволяет сопоставлять частичное содержимое:

find('title').native.text.should have_content("Status of your account::")
13 голосов
/ 26 февраля 2011

Вы должны быть в состоянии найти элемент title, чтобы убедиться, что он содержит нужный текст:

page.should have_xpath("//title", :text => "My Title")
3 голосов
/ 01 марта 2013

Я добавил это к своему помощнику спецификации:

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
2 голосов
/ 15 сентября 2014

Чтобы проверить заголовок страницы с помощью 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, а поскольку элемент заголовка невидим, вам необходим параметр visible: false, чтобы поиск включал невидимые элементы страницы.

2 голосов
/ 27 февраля 2011

Тестирование заголовка каждой страницы можно сделать намного проще с помощью 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
0 голосов
/ 21 февраля 2014

Вам просто нужно установить subject в page и затем написать ожидание для метода 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
0 голосов
/ 17 марта 2013

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

...