ซีลีเนียม: ข้อยกเว้น FirefoxProfile ไม่สามารถโหลดโปรไฟล์ได้


96

ตามคำถามก่อนหน้านี้ฉันได้อัปเดต Selenium เป็นเวอร์ชัน 2.0.1 แต่ตอนนี้ฉันมีข้อผิดพลาดอีกครั้งแม้ว่าไฟล์โปรไฟล์จะอยู่ภายใต้/tmp/webdriver-py-profilecopy:

  ไฟล์ "/home/sultan/Repository/Django/monitor/app/request.py" บรรทัดที่ 236 ในการดำเนินการ
    เบราว์เซอร์ = Firefox (โปรไฟล์)
  ไฟล์ "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py" บรรทัด 46 ใน __init__
    self.binary, หมดเวลา),
  ไฟล์ "/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_connectable
    เพิ่ม WebDriverException ("ไม่สามารถโหลดโปรไฟล์ได้โปรไฟล์ Dir:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: ไม่สามารถโหลดโปรไฟล์ โปรไฟล์ Dir: / tmp / webdriver-py-profilecopy

เกิดอะไรขึ้น? ฉันจะแก้ไขปัญหานี้ได้อย่างไร?

คำตอบ:


132

อัปเดต:

ทีมซีลีเนียมได้รับการแก้ไขในเวอร์ชันล่าสุด สำหรับสภาพแวดล้อมเกือบทั้งหมดการแก้ไขคือ:

pip ติดตั้ง -U ซีลีเนียม

ไม่ชัดเจนว่าเวอร์ชันใดได้รับการแก้ไข (เห็นได้ชัดว่าเป็นr13122 ) แต่แน่นอนโดย 2.26.0 (ปัจจุบัน ณ เวลาที่อัปเดต) ได้รับการแก้ไขแล้ว


ข้อผิดพลาดนี้หมายความว่า _wait_until_connectable หมดเวลาเนื่องจากด้วยเหตุผลบางประการโค้ดไม่สามารถเชื่อมต่อกับส่วนขยาย webdriver ที่โหลดลงใน firefox ได้

ฉันเพิ่งรายงานข้อผิดพลาดไปยังซีลีเนียมซึ่งฉันได้รับข้อผิดพลาดนี้เนื่องจากฉันพยายามใช้พร็อกซีและมีการยอมรับการเปลี่ยนแปลงที่กำหนดค่าไว้เพียง 2 ใน 4 รายการในโปรไฟล์เท่านั้นดังนั้นจึงไม่ได้กำหนดค่าพร็อกซีให้คุยด้วย ส่วนขยาย ไม่แน่ใจว่าทำไมถึงเกิดขึ้น ...

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


3
sudoจำเป็นต้องเพิ่ม a หากไม่ได้ล็อกอินด้วย root อย่างไรก็ตามนี่คือการช่วยชีวิต! ขอบคุณ !!
Abhranil Das

ใช่มันช่วยแก้ไข WebDriverException: ข้อความ: 'ไม่สามารถโหลดโปรไฟล์ได้
tom joy

5
@AbhranilDas คุณไม่ต้องการsudoถ้าคุณใช้ a virtualenv(ซึ่งคุณควรใช้)
คอส

7
ไม่โซลูชันนี้ใช้ไม่ได้กับ Firefox 45.0b และ Selenium ล่าสุด (2.5.1)
Alex GP

1
@ อเล็กซ์จีพี. ฉันเขียนคำตอบสำหรับคำถามนี้เป็นครั้งแรกเมื่อ 4.5 ปีที่แล้ว ฉันสงสัยว่าเวลาผ่านไปนานพอสมควรแล้วจึงอาจคุ้มที่จะตั้งคำถามใหม่ หากคุณเป็นเช่นนั้นโปรดระบุข้อมูลอ้างอิงสำหรับคำถามนี้และ: ก) เวอร์ชัน Firefox และ Selenium ที่คุณระบุไว้ข้างต้น b) ระบบปฏิบัติการของคุณ; c) pip เวอร์ชันของคุณ ฉันเดาว่าปัญหาของคุณอาจเกี่ยวข้องกับเวอร์ชัน pip เนื่องจากมีการเปลี่ยนแปลงในช่วง 5 ปีที่ผ่านมา
Rachel

31

ฉันมีปัญหาเดียวกันหลังจากอัปเกรด Ubuntu เป็น 12.04

ปัญหาอยู่ที่ด้านแพ็กเกจและได้รับการแก้ไขแล้วในไลบรารีเวอร์ชันล่าสุด เพียงอัปเดตไลบรารีซีลีเนียม สำหรับสภาพแวดล้อม Python เกือบทั้งหมดนี่คือ:

pip install -U selenium

ไม่รู้ว่าทำไม แต่มีซีลีเนียม 2.28.0 ฉันมีปัญหาเดียวกันกับ FireFox 22.0 และ 23.0 บน Ubuntu การดาวน์เกรด firefox เป็น 18.0 เท่านั้นที่ใช้ได้ดีสำหรับฉัน (ไม่เคยตรวจสอบเวอร์ชันอื่น)
Dmitry

26

ฉันประสบปัญหาเดียวกันกับ FF 32.0 และ Selenium selenium-2.42.1-py2.7.egg พยายามอัปเดตซีลีเนียม แต่เป็นเวอร์ชันล่าสุดแล้ว วิธีแก้ปัญหาคือการดาวน์เกรด Firefox เป็นเวอร์ชัน 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

ฉันจะดาวน์เกรด Firefox บน Mac ของฉันได้อย่างไร ฉันใช้ scrapy / selenium บน mactop ของฉันใน 'Virtualenv' และมีข้อผิดพลาดเดียวกัน ฉันคิดว่าถ้าฉันลดระดับบน mac ของฉันมันจะแก้ไขได้
brkr

8

ในฐานะที่เป็นส่วนเสริมสำหรับคำตอบของJeff Hoyeวิธีที่ 'Pythonic' เพิ่มเติมจะเป็นคลาสย่อย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ไม่ได้ผล (ในกรณีของฉันไม่ได้) ให้ลองดาวน์เกรด Firefox เป็นเวอร์ชันก่อนหน้า

ฉันมี Firefox 49.0 และลดระดับเป็น 45.0 เพื่อให้แน่ใจว่าซีลีเนียมรองรับเวอร์ชันนี้ มันทำงานได้อย่างสมบูรณ์แบบแล้ว

นี่เป็นวิธีที่รวดเร็วในการดาวน์เกรดเป็น Firefox 45.0:

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

หวังว่านี่จะช่วยได้


4

หากคุณใช้ webdriver จาก cygwin ปัญหาคือเส้นทางไปยังโปรไฟล์ยังคงอยู่ในรูปแบบ POSIX ซึ่งทำให้โปรแกรม windows สับสน โซลูชันของฉันใช้ cygpath เพื่อแปลงเป็นรูปแบบ Windows

ในไฟล์ / วิธีการนี้: 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)

เนื่องจาก Python ไม่ได้ใกล้เคียงกับภาษาการเขียนโปรแกรมหลักของฉันหากมีใครสามารถแนะนำวิธีการ pythonic เพิ่มเติมบางทีเราสามารถผลักดันมันไปสู่การกระจาย แน่นอนว่าจะมีประโยชน์ถ้ามันทำงานใน cygwin ได้ทันทีจากกล่อง


3

ฉันมีปัญหาเดียวกันและเชื่อว่ามันเป็นคำสั่งผสมที่ไม่ถูกต้องของซีลีเนียม / Firefox ปรากฎว่าสิทธิ์. mozilla / โฟลเดอร์ของฉันสามารถเข้าถึงได้โดยผู้ใช้รูทเท่านั้น การทำchmod 770 ~/.mozilla/ไม่ได้เคล็ดลับ ฉันขอแนะนำให้แน่ใจว่านี่ไม่ใช่ปัญหาก่อนที่จะแก้ไขปัญหาต่อไป


1

pip install -U selenium

ฉันมีปัญหาเดียวกันกับ Firefox 34.0.5 (Dec 1, 2014)และอัปเกรดซีลีเนียมจาก2.42.1เป็น2.44.0แก้ไขปัญหาของฉัน

อย่างไรก็ตามตั้งแต่นั้นมาฉันได้พบปัญหานี้อีกครั้งฉันคิดว่าด้วย 2.44.0 และการอัปเกรดอื่นได้รับการแก้ไข ดังนั้นฉันจึงสงสัยว่ามันอาจได้รับการแก้ไขโดยเพียงแค่ถอนการติดตั้งแล้วติดตั้งใหม่ ถ้าเป็นเช่นนั้นฉันไม่แน่ใจว่าสิ่งที่บ่งบอกถึงปัญหาพื้นฐานคืออะไร


ฉันมีปัญหาเดียวกันกับ 2.44 และ ff35 ใน windows
pylover

0

ฉันใช้ซีลีเนียม 2.53 และ Firefox เวอร์ชัน 55.0 ฉันแก้ไขปัญหานี้โดยการติดตั้ง Firefox เวอร์ชันเก่ากว่า (46.0.1) เนื่องจากซีลีเนียม 2.53 จะไม่ทำงานกับ Firefox เวอร์ชัน 47.0 ขึ้นไป


-1

นี่ไม่ใช่วิธีแก้ปัญหาที่เหมาะสม แต่ใช้ได้ผลสำหรับฉันถ้าใครสามารถปรับปรุงได้ฉันก็ยินดีที่จะรู้ ฉันเพิ่งเรียกใช้สคริปต์ของฉันในฐานะรูท: sudo python myscript.py. ฉันเดาว่าฉันสามารถแก้ไขได้โดยการเปลี่ยนไฟล์หรือไดเรกทอรีเริ่มต้นของโปรไฟล์สามารถใช้งานได้

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.