2012-05-09 85 views
8

在由Capybara提供的文檔,你可以改變default_driver在特定的試驗組:如何更改水豚黃瓜測試的測試默認驅動程序?

describe 'some stuff which requires js', :js => true do 
    it 'will use the default js driver' 
    it 'will switch to one specific driver', :driver => :selenium 
end 

,如果我想爲一個特定的黃瓜測試組做到這一點?我將如何添加這些參數?

When /^I do something$/ do 
    fill_in "a_text_box", :with => "stuff" 
    fill_in "another_text_box", :with => "another_thing" 
end 

謝謝!

回答

5

黃瓜,我已經做了這兩個步驟:

/features/support/env.rb,請將下面一行:

Capybara.javascript_driver = :webkit 

然後在黃瓜的特徵,只是具體方案之前,在場景之前添加@javascript - 如下所示:

@javascript 
Scenario: Successful sign in - with no flash message if using current firefox 
When I'm using a current version of Firefox 
When I visit the practitioner home page with "[email protected]"'s token 
Then I should be signed in as practitioner "Jane Doe" 
And I should be on the practitioner activities welcome page 
And I should not see a flash message warning me I have an unsupported browser 

這告訴黃瓜運行該特定場景時使用javascript驅動程序。

這就是我使用Capybara Webkit完成此操作的原因 - 我相信其他驅動程序也是類似的。

+1

現在,Capybara會自動切換到與您場景中的標籤匹配的任何命名驅動程序,而不是'@ javascript'的特例。例如如果您創建'tablet'驅動程序並使用'@ tablet'標記您的場景,那麼'tablet'驅動程序將自動使用! –

+0

感謝您的回答。 –

+0

這是否使特定於該方案的測試恢復爲默認值? – Goalie

4
Capybara.current_driver = :webkit # temporarily select different driver 
#... tests ... 
Capybara.use_default_driver  # switch back to default driver 
+1

我會把'Capybara.current_driver =:webkit'在When組之前,然後是'Capybara.user_default_driver'之後? – Goalie

0

用黃瓜,你可以使用標籤來實現這一點。例如,如果您的默認驅動程序是webkit,但您想用selenium運行某個場景,則可以使用@selenium對其進行標記。這在默認情況下

可與gem 'selenium-webdriver'一般來說,如果你想切換到其它驅動程序(在本例中無頭鍍鉻),把下面的代碼在features/support/drivers.rb

# features/support/drivers.rb 
Around '@headless_chrome' do |scenario, block| 
    begin 
    Capybara.current_driver = :headless_chrome # temporarily select headless chrome 
    block.call 
    ensure 
    Capybara.use_default_driver    # switch back to default webkit driver 
    end 
end