2012-07-03 16 views
5

जब मैं सेलेनियम का उपयोग करके परीक्षण चलाता हूं तो ब्राउजर बार-बार यह कहते हुए पॉप-अप करते हैं कि फ़ायरफ़ॉक्स प्रोफ़ाइल नहीं मिल सकती है। मैंने सेलेनियम के उपयोग के लिए एक फ़ायरफ़ॉक्स प्रोफाइल तैयार किया है, मुझे यकीन नहीं है कि उस प्रोफ़ाइल में सेलेनियम कहां से बताना है।सेलेनियम/कैपिबरा - फ़ायरफ़ॉक्स प्रोफाइल लोड नहीं किया जा सकता

मैं सेलेनियम कैसे कहूं कि फ़ायरफ़ॉक्स प्रोफ़ाइल का उपयोग करने के लिए?

उत्तर

4

मुझे यह वही त्रुटि मिल रही थी। मेरे लिए यह पता चला कि यह मेरी परीक्षा के भीतर save_and_open_page पर कॉल कर रहा था जो समस्या पैदा कर रहा था। मैंने उनको हटा दिया और फ़ायरफ़ॉक्स प्रोफाइल त्रुटियां रुक गईं।

मुझे कैपेबरा/सेलेनियम के लिए केवल एक विशेष फ़ायरफ़ॉक्स प्रोफ़ाइल के लिए कोई आवश्यकता नहीं है (लेकिन), लेकिन इस समस्या को हल करने की कोशिश में, अपने प्रश्न का अधिक जवाब देने के लिए, मैं निम्नलिखित दो विधियों को निर्दिष्ट करने के लिए आया हूं फ़ायरफ़ॉक्स के लिए प्रोफ़ाइल।

नोट: इनमें से कोई भी वास्तव में प्रोफ़ाइल त्रुटियों के साथ मेरी समस्या का समाधान नहीं करता है, लेकिन मैंने उनसे यहां भी शामिल किया है, क्योंकि आपने पूछा था।

विधि 1: (। Firefox में सेटअप विशेष प्रोफ़ाइल की परियोजना पर हर डेवलपर की आवश्यकता है)

अपने test_helper.rb

Capybara.register_driver :my_firefox_driver do |app| 
    Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => 'name_of_existing_profile') 
end 

विधि 2 के लिए निम्न जोड़ें: (फ़ायरफ़ॉक्स में विशेष प्रोफ़ाइल सेट करने के लिए प्रोजेक्ट पर प्रत्येक डेवलपर की आवश्यकता नहीं है।)

निम्नलिखित जोड़ें अपने परीक्षण helper.rb को

require 'selenium-webdriver' 

... 

    Capybara.register_driver :my_firefox_driver do |app| 
    profile = Selenium::WebDriver::Firefox::Profile.new 
    Capybara::Selenium::Driver.new(app, :browser => :firefox, :profile => profile) 
    end 

फिर, चाहे कोई भी पद्धति के चयन के ऊपर का, नया ड्राइवर को अपने डिफ़ॉल्ट चालक सेट करें, या चुनिंदा अपने परीक्षण की शुरुआत में Capybara.current_driver = :my_firefox_driver डाल और कहा कि सुनिश्चित करने के द्वारा नए ड्राइवर का उपयोग आपके test_helper.rb में Capybara.use_default_driver पर एक टियरडाउन कार्य शामिल है, यदि आपको सेटअप निर्देशों का पालन करना चाहिए।

+0

इसके लिए धन्यवाद! मैं क्रोम को अपने डिफ़ॉल्ट ब्राउज़र के रूप में सेट करके काम कर रहा हूं (save_and_open_page) मुझे पृष्ठ दिखाने में कामयाब रहा। तो अब यह एफएफ पर सभी परीक्षण चलाता है और क्रोम पर सहेजे गए पृष्ठों को प्रदर्शित करता है। – vas

1

रुबी में ऐसा करने के लिए बहुत सारी जांच की आवश्यकता थी, लेकिन मुझे यह काम करने के लिए मिला।

सबसे पहले, प्रोफ़ाइल का चयन करने के लिए -p ध्वज के साथ फ़ायरफ़ॉक्स प्रारंभ करें। एक नई प्रोफ़ाइल बनाएं और इसे अपनी परियोजना में किसी स्थान पर संग्रहीत करें। मेरे मामले में "firefox_profile" निर्देशिका में।

module Selenium 
    module WebDriver 
    module Firefox 
     class Profile 
     def layout_on_disk 
      firefox_profile = File.expand_path(File.join(File.dirname(__FILE__),'firefox_profile')) 
      profile_dir = create_tmp_copy(firefox_profile) 
      FileReaper << profile_dir 

      install_extensions(profile_dir) 
      delete_lock_files(profile_dir) 
      delete_extensions_cache(profile_dir) 
      update_user_prefs_in(profile_dir) 

      puts "Using temporary Firefox profile in: #{profile_dir} from #{firefox_profile}" 
      profile_dir 
     end 
     end 
    end 
    end 
end 

As Gist here

0

मैं भी इस समस्या को मारा और यह पता चला होने के लिए: उसके बाद आप सेलेनियम जहां इस प्रोफाइल को खोजने के लिए पर एक संकेत देने के लिए और आप बंदर पैच कर सकते हैं कि layout_on_disk विधि क्या करने की जरूरत फ़ायरफ़ॉक्स प्रोफाइल से असंबंधित। मेरे मामले में, यह Ghostdriver I के संस्करण के बीच एक क्लासपाथ असंगतता था जो फ़ैंटॉमजेएस के लिए उपयोग कर रहा था और सेलेनियम I का संस्करण फ़ायरफ़ॉक्स ड्रायवर के लिए उपयोग कर रहा था (मैं दोनों के लिए अनुमति देने के लिए अपना कोड सेट करने का प्रयास कर रहा था)। Ghostdriver निर्भरता को हटाने और PhantomJS कोड पर टिप्पणी करने से यह प्रोफ़ाइल त्रुटि दूर हो गई। असल में, अगर मैंने त्रुटि संदेशों को पढ़ा था तो यह मुझे अधिक बारीकी से दे रहा था, मैंने देखा होगा कि प्रोफ़ाइल त्रुटि का मूल कारण वर्ग असंगतताओं के कारण एक अनुपलब्ध विधि थी। विशिष्ट त्रुटि कुछ ऐसा थी:

NoSuchMethodError: org.openqa.selenium.os.CommandLine।WaitFor (जे) वी

+1

डाउनवोट क्यों? मूल प्रश्न लेखक के समान लक्षण थे, भले ही मूल कारण अलग था। मुझे यह प्रश्न मेरी खोज में मिला और सोचा कि अन्य भी हो सकते हैं। मैं समझ नहीं पा रहा हूं, लेकिन क्या आपको सच में लगता है कि यह मेरा जवाब पाने में दर्द होता है? मैं मानता हूं कि सावधानीपूर्वक पढ़ना अंतिम समाधान था, लेकिन मुझे नहीं लगता कि मैं पॉपअप बॉक्स में समस्या के समाधान के लिए googling में अकेला हूं, यह अनदेखा कर रहा है कि पॉपअप गलत है और लॉग में एक संदेश की तलाश है। –

0

मुझे फ़ायरफ़ॉक्स अपडेट के बाद इस त्रुटि का सामना करना पड़ा।

मैंने फ़ायरफ़ॉक्स मैन्युअल रूप से खोला, इसे अपडेट लागू करने की अनुमति देने के लिए, परीक्षण बाद में काम किया।

संबंधित मुद्दे