2017-04-17 133 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'标记的,这取决于它是什么类型的测试。 –