2016-01-29 5 views
5

तक नहीं पहुंच सकता है, मैं डॉकराइज्ड सेलेनियम स्टैंडअलोन फ़ायरफ़ॉक्स ब्राउज़र पर रेल फीचर टेस्ट पर रुबी चलाने की कोशिश कर रहा हूं। ऐसा लगता है कि मुझे नेटवर्किंग के साथ समस्याएं हैं क्योंकि सेलेनियम उदाहरण को कैपिबरा द्वारा शुरू किए गए यूआरएल से कनेक्ट नहीं कर सकता है।डॉकराइज्ड सेलेनियम ब्राउजर कैपिबरा टेस्ट यूआरएल

यहाँ मेरी नमूना docker-compose.yml फ़ाइल है:

ff: 
    image: selenium/standalone-firefox:2.48.2 
    container_name: firefox-browser 
web: 
    build: . 
    container_name: my-app 
    volumes: 
    - ".:/home/ubuntu/my-app" 
    command: /bin/bash -l scripts/docker-start-tests.sh 
    ports: 
    - "3000:3000" 

और मैं शुरू नेटवर्किंग सक्षम साथ डोकर-रचना:

docker-compose --x-networking up 

परीक्षण स्क्रिप्ट इस

rspec ./spec/features/login_spec.rb:43 

की तरह एक rspec आदेश चलाता है डॉकर परीक्षणों के लिए मैंने कैपिबरा के लिए दूरस्थ ड्राइवर सक्षम किया है:

Capybara.register_driver :docker_firefox do |app| 
    Capybara::Selenium::Driver.new(app, { 
    browser: :remote, 
    url: "#{ENV['FF_URL']}/wd/hub", 
    desired_capabilities: Selenium::WebDriver::Remote::Capabilities.firefox 
    }) 
end 

और अंत में मैं इस तरह परीक्षण फोन:

unless ENV['FF_URL'].nil? 
    Capybara.current_driver = :docker_firefox 
    Capybara.javascript_driver = :docker_firefox 

    Capybara.app_host = "http://my-app:56555" 
    Capybara.server_port = "56555" 
    # Capybara.server_host = "my-app" 
end 

visit root_path 
save_and_open_screenshot 
click_link "Sign in" 
... 

मैं पूंछ ब्राउज़र कंटेनर लॉग और मुझे लगता है कि सेलेनियम Capybara से आदेश प्राप्त करता है। समस्या यह है कि यह प्रदान किए गए यूआरएल से कनेक्ट नहीं हो सकता है, जिसे मैं स्क्रीनशॉट के साथ पुष्टि कर सकता हूं।

फ़ायरफ़ॉक्स मेरी-ऐप पर सर्वर से कनेक्शन स्थापित नहीं कर सकते: 56555

बेहतर समस्या को समझने के लिए, मैं रेल एप्लिकेशन शुरू किया और मैं सेलेनियम कंटेनर से यह तक पहुँचने का प्रयास । मुझे लगता है कि अगर मैं एक आईपी बाध्यकारी के साथ रेल ऐप शुरू करता हूं तो मैं केवल सेलेनियम कंटेनर से ऐप तक पहुंच सकता हूं।

rails s Puma -b 0.0.0.0 

यह नेटवर्किंग समस्या की तरह दिखता है, लेकिन मैं समाधान का पता नहीं लगा सकता।

मैं सेलेनियम कंटेनर कैलीबारा के साथ रुपेक फीचर परीक्षण चलाने वाले रेल ऐप तक कैसे पहुंच सकता हूं?

capybara (2.6.0) 
selenium-webdriver (2.48.1) 

आपकी सहायता के लिए धन्यवाद।

+0

सर्वर धागा रेल Capybara.server_host (डिफ़ॉल्ट रूप से 127.0.0.1) को बांधता में परीक्षण ऐप को चलाता है - आप जो कुछ भी है कि आईपी इंटरफेस डोकर कंटेनर पर अपनी मशीन के लिए वापस बात कर सकते हैं करने के लिए परिवर्तित करने का प्रयास कर सकते हैं - हो सकता है 0.0.0.0 –

+0

@TomWalpole क्या आप 'Capybara.app_host' का जिक्र कर रहे हैं? मैं कंटेनर चलने वाले रेल के लिए असाइन किए गए आईपी को पार्स करता हूं और मैं इसे app_host पर पास करता हूं। फिर भी, मैं सेलेनियम कंटेनर से इसका उपयोग नहीं कर सकता। – artsince

+1

नहीं - Capybara.app_host का उपयोग ब्राउज़र को मिलने वाले पते बनाने के लिए किया जाता है, Capybara.server_host ब्राउज़र से कनेक्शन के लिए आईपी परीक्षण परीक्षण सुनता है –

उत्तर

4

सर्वर थ्रेड रेल कैपिबरा.server_host इंटरफ़ेस (डिफ़ॉल्ट रूप से 127.0.0.1) में बाइंड में परीक्षण ऐप चलाता है - आप इसे जो भी आईपी इंटरफ़ेस में बदल सकते हैं, डॉकर कंटेनर आपके मशीन पर वापस बात कर सकता है - आपके मामले में संभवतः

Capybara.server_host = '0.0.0.0' # bind to all interfaces 
संबंधित मुद्दे