2017-04-17 51 views
0

我正在嘗試使用capybara的方法page.should have_content(「some txt」)。如何從Capybara :: Session對象獲取頁面對象

我用的水豚通過獲取水豚會話,但無法弄清楚如何讓頁面對象

Capybara.register_driver :selenium do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :chrome) 
end 
Capybara.current_driver = :selenium 
capdriver = Capybara::Session.new(:selenium) 
capdriver.visit ("https://google.com") 

如何使用本使用從上面的活動會話(capdriver):

page.should have_content("some google text") 

我可能會設置錯誤的水豚(我習慣直接使用Selenium :: Webdriver)。

回答

0

page只是一種在Capybara :: DSL上定義的方法,當您在使用Capybaras自動會話管理時將Capybara :: DSL包括到您的測試類中時,它將返回Capybara.current_session。既然你手動管理會話您已經擁有訪問要斷言對水豚:: Session對象,所以

capdriver.should have_content("some google text") 

注意,這是假定您已經包括水豚:: RSpecMatchers到任何對象範圍你在運行這個(所以have_content可用)

+0

我已經嘗試這樣做,我得到一個「NoMethod」錯誤(我確實有需要「水豚/ rspec的」 - 我假設這包括RSpecMatchers ??) NoMethodError: 未定義的方法'have_content'爲#> – ibaralf

+0

要求capybara/rspec包含rspec視圖中的匹配器和功能規格 - https://github.com/teamcapybara/capybara/blob/master/lib/capybara/rspec.rb#L10 - 所以除非你在視圖或功能的例子(場景/它阻止),那麼它不是包括在內。從錯誤它看起來像在SetPassword類的實例中運行它,是RSpec測試實例嗎?如果是,那麼確定它是用'type :::feature'或'type :::view'標記的,這取決於它是什麼類型的測試。 –