2013-08-22 6 views
24

तो, एकीकरण परीक्षण के संबंध में Capybara और RSpec उपयोग करने के साथ, मैं जानता हूँ कि मैं यह कर सकता:बदलें डिफ़ॉल्ट Capybara ब्राउज़र विंडो आकार

page.driver.browser.manage.window.resize_to(x,y) 
How to set Browser Window size in Rspec (Selenium) प्रति विशिष्ट RSpec परीक्षण के लिए

, लेकिन वहाँ यह करने के लिए एक रास्ता है वैश्विक रूप से ताकि मीडिया परीक्षणों से प्रभावित हर परीक्षण को इसे परिभाषित करने की आवश्यकता नहीं है?

उत्तर

12

आप निर्धारित कर सकते हैं कि before(:all) तहत

describe "Test" do 
    before(:all) do 
    ... 
    ... 
    page.driver.browser.manage.window.resize_to(x,y) #Mention it here 
    end 

    it "should find everything" do 
    ... 
    end 

    after(:all) do 
    ... 
    end 
end 
+0

फिर मुझे प्रत्येक spec फ़ाइल में ऐसा करने की ज़रूरत है? मैं * सब कुछ * के लिए यह कैसे करूँ? – CDub

+1

आप अपने उदाहरणों में मॉड्यूल को शामिल या विस्तारित करने के लिए RSpec.configure का उपयोग कर सकते हैं, फिर अपने पहले रखें: सभी /: मॉड्यूल में प्रत्येक जिसमें आप शामिल/विस्तार कर रहे हैं: https://www.relishapp.com/rspec/rspec-core/दस्तावेज़/सहायक-विधियां/परिभाषित-सहायक-इन-ए-मॉड्यूल –

+0

@CDub मेरा उत्तर देखें। उपर्युक्त चीज़ मेरे लिए भी काम नहीं करती है –

34

एक उचित तरीके से सभी js परीक्षण के लिए यह करने के लिए spec_helper.rbRSpec.configure ब्लॉक

config.before(:each, js: true) do 
    Capybara.page.driver.browser.manage.window.maximize 
end 
खिड़की को अधिकतम करने के

अंदर निम्नलिखित जोड़ना है। किसी भी विंडो आकार को सेट करने के लिए resize_to(x,y) पर बदलें।

संपादित: आप Capybara में हाल ही में परिवर्तन, क्या मेरे लिए काम किया की वजह से Poltergeist यह

config.before(:each, js: true) do 
    Capybara.page.driver.browser.resize(x,y) 
end 
+1

यह कैपिबरा और पोल्टरगेस्ट के साथ काम नहीं कर रहा है: # के लिए अपरिभाषित विधि 'प्रबंधित करें' <कैपिबरा :: पोल्टरगेस्ट :: ब्राउज़र: 0x007fd4e76ec828> ' – tirdadc

+0

हे @ टिरडाडैक कौन सा संस्करण है आप उपयोग कर रहे हैं? –

+0

ठीक है, मैं देख सकता हूं कि पोल्टरगेस्ट के लिए कोई प्रबंधन नहीं है लेकिन जवाब बदलने के लिए आकार बदलने का एक तरीका है! –

8

शायद है करने के लिए सही तरीका का उपयोग कर कर रहे हैं तो था:

before do 
    Capybara.page.current_window.resize_to(x, y) 
end 
+0

यह केवल एकमात्र ऐसा है जो कम से कम कुछ कर रहा है, लेकिन मुझे Capybara :: NotSupportedByDriver त्रुटि त्रुटि मिलती है। मैंने poltergeist और webkit दोनों की कोशिश की। मैं उबंटू 16.04 चला रहा हूं, किसी को भी पता है कि क्या गलत है? – Aurimas

+0

@Aurimas आप अपने ड्राइवर को बदलने का प्रयास कर सकते हैं, अपने spec में 'js: true' का उपयोग करने का प्रयास करें – ilgam

0

@tirdadc यदि आप पोल्टरगेस्ट का उपयोग कर रहे हैं, तो आप इसे rails_helper.rb फ़ाइल में कुछ जोड़ सकते हैं:

Capybara.register_driver :poltergeist do |app| 
    options = { 
    # js_errors: true, 
    # cookies: true, 
    window_size: [320, 568] # iphone 5 
    } 
    Capybara::Poltergeist::Driver.new(app, options) 
end 
2

Capybara 2.2.4 संस्करण में परीक्षण क्रम के लिए आप

before do 
    handle = Capybara.page.driver.current_window_handle 
    Capybara.page.driver.resize_window_to(handle, height, width) 
end 

या

before do 
    Capybara.page.current_window.resize_to(height, width) 
end 

आप Capybara :: NotSupportedByDriverError मिलता है ऐसा करने से इस लक्ष्य को हासिल कर सकते हैं: Capybara :: ड्राइवर :: बेस # current_window_handle आपको उदाहरण के लिए अपने ड्राइवर को बदलना होगा जावास्क्रिप्ट ड्राइव!

before do 
    Capybara.page.current_window.resize_to(height, width) 
end 

scenario js: true do 
    # your test here 
end 
संबंधित मुद्दे