2012-05-09 26 views
8

Trong tài liệu được cung cấp bởi Capybara, bạn có thể thay đổi default_driver vào một nhóm thử nghiệm cụ thể:Làm cách nào để thay đổi trình điều khiển mặc định thử nghiệm cho thử nghiệm Dưa chuột ở Capybara?

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 

gì nếu tôi muốn làm điều này cho một nhóm thử nghiệm dưa chuột cụ thể? Làm cách nào để thêm các thông số đó?

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

Cảm ơn!

Trả lời

5

Trong dưa chuột, tôi đã làm điều này theo hai bước:

Trong /features/support/env.rb, đặt dòng sau:

Capybara.javascript_driver = :webkit 

Sau đó, trong tính năng dưa chuột, ngay trước khi kịch bản cụ thể, thêm @javascript ngay trước trường hợp - như sau:

@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 

Điều này cho phép dưa chuột sử dụng trình điều khiển javascript khi nó chạy kịch bản cụ thể đó.

Đây là cách tôi đã thực hiện việc này bằng cách sử dụng Capybara Webkit - Tôi chắc rằng các trình điều khiển khác tương tự.

+1

Giờ đây Capybara tự động chuyển sang bất kỳ trình điều khiển có tên nào khớp với thẻ trên kịch bản của bạn, thay vì đây là trường hợp đặc biệt cho '@ javascript'. ví dụ. nếu bạn tạo trình điều khiển 'máy tính bảng' và gắn thẻ kịch bản của bạn với' @ tablet', trình điều khiển 'máy tính bảng' sẽ tự động được sử dụng! –

+0

Cảm ơn bạn đã mở rộng câu trả lời. –

+0

Điều này có làm cho thử nghiệm cụ thể đối với kịch bản và hoàn nguyên về mặc định sau không? – Goalie

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

tôi sẽ đưa 'Capybara.current_driver =: webkit' ngay trước nhóm Khi và sau đó là 'Capybara.user_default_driver' sau? – Goalie

0

Với dưa leo, bạn có thể đạt được điều này bằng cách sử dụng thẻ. Ví dụ, nếu trình điều khiển mặc định của bạn là webkit nhưng bạn muốn chạy một số kịch bản với selen, bạn có thể gắn nó với @selenium. Này làm việc với gem 'selenium-webdriver' theo mặc định

Nói chung, nếu bạn muốn chuyển sang một số tài xế khác (Headless chrome trong ví dụ này), đặt đoạn mã sau vào 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 
Các vấn đề liên quan