सेलेनियम: FirefoxProfile अपवाद प्रोफ़ाइल लोड नहीं कर सकता


96

प्रति यह पिछले प्रश्न मैं संस्करण 2.0.1 के लिए सेलेनियम अद्यतन लेकिन अब मैं एक और त्रुटि है, तब भी जब प्रोफ़ाइल फाइलों के नीचे मौजूद /tmp/webdriver-py-profilecopy:

  फ़ाइल "/home/sultan/Repository/Django/monitor/app/request.py", पंक्ति 236, प्रदर्शन में
    ब्राउज़र = फ़ायरफ़ॉक्स (प्रोफ़ाइल)
  फ़ाइल "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", पंक्ति 46, __init__ में
    स्व। चिकित्सा, समय समाप्त),
  फ़ाइल "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", लाइन 46, __init__ में
    self.binary.launch_browser (self.profile)
  फ़ाइल "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", लाइन 44, launch_browser में
    self._wait_until_connectable () 
  फ़ाइल "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", पंक्ति 87, _wait_until_nectnect में
    WebDriverException ("प्रोफ़ाइल लोड नहीं कर सकते हैं। प्रोफाइल डिर:% s"% self.profile.path)
selenium.common.exception.WebDriverException: प्रोफ़ाइल लोड नहीं कर सकता। प्रोफाइल डिर: / tmp / webdriver-py-profilecopy

गलत क्या है? मेरे द्वारा इस समस्या का समाधान कैसे किया जा सकता है?

जवाबों:


132

अपडेट करें:

सेलेनियम टीम नवीनतम संस्करण में तय की गई। लगभग सभी वातावरणों के लिए यह तय है:

पाइप स्थापित -U सेलेनियम

अस्पष्ट है कि यह किस संस्करण में तय किया गया था (जाहिरा तौर पर r13122 ), लेकिन निश्चित रूप से 2.26.0 (अपडेट के समय वर्तमान) से यह तय हो गया है।


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

मुझे सिर्फ सेलेनियम में त्रुटि की सूचना मिली है जहाँ मुझे यह त्रुटि मिल रही है क्योंकि मैं एक प्रॉक्सी का उपयोग करने की कोशिश कर रहा हूं और प्रोफाइल में 4 में से 2 कॉन्फ़िगर किए गए बदलावों को फ़ायरफ़ॉक्स द्वारा स्वीकार कर लिया गया है, इसलिए प्रॉक्सी को बात करने के लिए कॉन्फ़िगर नहीं किया गया है विस्तार। यकीन नहीं हो रहा कि ऐसा क्यों हो रहा है ...

https://github.com/seleniumhq/selenium-google-code-issue-archive/issues/2061


3
sudoयदि रूट के रूप में लॉग इन नहीं किया गया है तो जोड़ना आवश्यक है। वैसे भी, यह एक लाइफसेवर था! धन्यवाद!!
अभिनील दास

हाँ यह WebDriverException को ठीक करने में मदद करता है: संदेश: 'can' t प्रोफ़ाइल को लोड नहीं करता है।
टॉम आनंद

5
@AbhranilDas आपको जरूरत नहीं है sudoअगर आप एक का उपयोग कर रहे हैं virtualenv(जो आपको शायद उपयोग करना चाहिए)।
कोस

7
नहीं, यह समाधान फ़ायरफ़ॉक्स 45.0b और नवीनतम सेलेनियम (2.5.1) के साथ काम नहीं करता है
एलेक्स GP

1
@ AlexG.P। मैंने इस प्रश्न का उत्तर 4.5 साल पहले लिखा था। मुझे संदेह है कि पर्याप्त समय बीत चुका है कि यह एक नया सवाल उठाने लायक हो सकता है। यदि आप करते हैं, तो कृपया इस प्रश्न का संदर्भ शामिल करें: और क) आपके द्वारा दिए गए फ़ायरफ़ॉक्स और सेलेनियम संस्करण; बी) अपने ओएस; c) आपके पाइप का संस्करण। मुझे लगता है कि आपकी समस्या पाइप संस्करण से संबंधित हो सकती है, क्योंकि यह पिछले 5 वर्षों में बदल गया है।
राचेल

31

मेरे पास उबंटू को 12.04 में अपग्रेड करने के बाद एक ही मुद्दा था।

मुद्दा पैकेज की तरफ था और लाइब्रेरी के नवीनतम संस्करण में तय किया गया है। बस सेलेनियम लाइब्रेरी को अपडेट करें। लगभग सभी पायथन परिवेशों के लिए यह है:

pip install -U selenium

पता नहीं क्यों, लेकिन सेलेनियम 2.28.0 होने के कारण मेरे पास FireFox 22.0 और Ubuntu पर 23.0 के साथ एक ही मुद्दा है। केवल 18.0 के लिए फ़ायरफ़ॉक्स डाउनग्रेड करना मेरे लिए ठीक काम करता है (कभी अन्य संस्करणों की जाँच नहीं की गई)।
दिमित्री

26

मुझे FF 32.0 और सेलेनियम सेलेनियम-2.42.1-py2.7.egg के साथ एक ही समस्या का सामना करना पड़ा। सेलेनियम को अपडेट करने की कोशिश की, लेकिन यह पहले से ही नवीनतम संस्करण है। समाधान फ़ायरफ़ॉक्स को डाउनग्रेड करने के लिए संस्करण 30 पर था। यहाँ प्रक्रिया है:

#Download version 30 for Linux (This is the 64 bit)
wget http://ftp.mozilla.org/pub/mozilla.org/firefox/releases/30.0/linux-x86_64/en-US/firefox-30.0.tar.bz2

tar -xjvf firefox-30.0.tar.bz2
#Remove the old version
sudo rm -rf /opt/firefox*
sudo mv firefox /opt/firefox30.0
#Create a permanent link
sudo ln -sf /opt/firefox30.0/firefox /usr/bin/firefox

इससे सभी समस्याएं हल हो गईं, और यह संयोजन बेहतर काम करता है!


यह मेरा सेटअप तय !!
Macumbaomuerte

मैं अपने मैक पर फ़ायरफ़ॉक्स को कैसे डाउनग्रेड करूं? मैं 'virtualenv' पर अपने mactop पर स्क्रैपी / सेलेनियम का उपयोग कर रहा हूं और एक ही त्रुटि है। मुझे लगता है कि अगर मैं अपने मैक पर डाउनग्रेड करता हूं तो यह उसे ठीक कर देगा।
brkr

8

जेफ होए के उत्तर के विस्तार के रूप में , एक अधिक 'पायथोनिक' तरीका webdriver.firefox.firefox_profile.FirefoxProfileनिम्नानुसार उपवर्ग के लिए होगा :

class CygwinFirefoxProfile(FirefoxProfile):
    @property
    def path(self):
        path = self.profile_dir
        # Do stuff to the path as described in Jeff Hoye's answer
        return path

फिर, अपना ड्राइवर बनाने के लिए:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())

5

यदि pip install -U seleniumयह काम नहीं करता (यह मेरे मामले में नहीं था), तो अपने फ़ायरफ़ॉक्स को पिछले संस्करण में अपग्रेड करने का प्रयास करें।

मेरे पास फ़ायरफ़ॉक्स 49.0 था और यह सुनिश्चित करने के लिए कि यह सेलेनियम द्वारा समर्थित है, यह सुनिश्चित करने के लिए 45.0 तक डाउनग्रेड किया गया है। यह तो पूरी तरह से काम किया।

यहाँ फ़ायरफ़ॉक्स 45.0 को डाउनग्रेड करने का एक तेज़ तरीका है:

sudo apt-get install firefox=45.0.2+build1-0ubuntu1

उम्मीद है की यह मदद करेगा।


4

यदि आप cygwin से वेबड्राइवर चला रहे हैं, तो समस्या यह है कि प्रोफ़ाइल का पथ अभी भी POSIX प्रारूप में है जो विंडोज़ प्रोग्राम को भ्रमित करता है। मेरा समाधान इसे Windows प्रारूप में परिवर्तित करने के लिए cygpath का उपयोग करता है।

इस फाइल / विधि में: selenium.webdriver.firefox.firefox_binary.launch_browser ():

बदलने के:

    self._start_from_profile_path(self.profile.path)

साथ में:

    from subprocess import Popen, PIPE
    proc = Popen(['cygpath','-d',self.profile.path], stdout=PIPE, stderr=PIPE)
    stdout, stderr = proc.communicate()
    path = stdout.split('\n', 1)[0]

    self._start_from_profile_path(path)
    #self._start_from_profile_path(self.profile.path)

चूंकि पायथन भी मेरी प्राथमिक प्रोग्रामिंग भाषा के करीब नहीं है, अगर कोई अधिक पाइथोनिक दृष्टिकोण की सिफारिश कर सकता है तो शायद हम इसे वितरण में धकेल सकते हैं। यह निश्चित रूप से आसान होगा यदि यह बॉक्स के ठीक बाहर साइबरविन में काम करता है।


3

मुझे भी यही समस्या थी और माना जाता था कि यह सेलेनियम / फ़ायरफ़ॉक्स का गलत कॉम्बो था। यह पता चला कि मेरे .mozilla / फ़ोल्डर की अनुमति केवल रूट उपयोगकर्ता के लिए सुलभ थी। करत रहल chmod 770 ~/.mozilla/छल। मैं यह सुनिश्चित करने का सुझाव दूंगा कि आगे समस्या निवारण से पहले यह मुद्दा नहीं है।


1

pip install -U selenium

मेरे पास यही मुद्दा था Firefox 34.0.5 (Dec 1, 2014)और सेलेनियम को अपग्रेड 2.42.1करने से लेकर 2.44.0मेरे मुद्दे को हल करने तक ।

हालाँकि, मैंने इस मुद्दे को फिर से देखा है, मुझे लगता है कि २.४४.० के साथ, और एक और अपग्रेड ने इसे ठीक कर दिया। तो मैं सोच रहा था कि यह बस की स्थापना रद्द करके और फिर से स्थापित करके तय किया जा सकता है। यदि हां, तो मुझे यकीन नहीं है कि अंतर्निहित समस्या का संकेत क्या होगा।


मैं 2.44 और ff35 के साथ खिड़कियों में ठीक यही समस्या है
pylover

0

मैं सेलेनियम 2.53 और फ़ायरफ़ॉक्स संस्करण 55.0 का उपयोग कर रहा था। मैंने इस मुद्दे को फ़ायरफ़ॉक्स (46.0.1) के पुराने संस्करण को स्थापित करके हल किया क्योंकि सेलेनियम 2.53 फ़ायरफ़ॉक्स संस्करण 47.0 और इसके बाद के संस्करण के लिए काम नहीं करेगा।


-1

यह एक उचित समाधान नहीं है लेकिन मेरे लिए काम किया है, अगर कोई सुधार कर सकता है तो मुझे यह जानकर खुशी होगी। मैं बस अपनी स्क्रिप्ट को रूट के रूप में चलाता हूं sudo python myscript.py:। मुझे लगता है कि मैं प्रोफ़ाइल डिफ़ॉल्ट फ़ाइल को बदलकर हल कर सकता हूं या निर्देशिका काम कर सकती है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.