Selenium: Pengecualian FirefoxProfile Tidak dapat memuat profil

96

Berdasarkan pertanyaan sebelumnya ini saya memperbarui Selenium ke versi 2.0.1 Tetapi sekarang saya memiliki kesalahan lain, bahkan ketika file profil ada di bawah /tmp/webdriver-py-profilecopy:

  File "/home/sultan/Repository/Django/monitor/app/request.py", baris 236, sedang dijalankan
    browser = Firefox (profil)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", baris 46, di __init__
    self.binary, timeout),
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", baris 46, di __init__
    self.binary.launch_browser (self.profile)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", baris 44, di launch_browser
    self._wait_until_connectable () 
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", baris 87, di _wait_until_connectable
    meningkatkan WebDriverException ("Tidak dapat memuat profil. Profil Dir:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: Tidak dapat memuat profil. Profil Dir: / tmp / webdriver-py-profilecopy

Apa yang salah? Bagaimana cara mengatasi masalah ini?

sultan
sumber

Jawaban:

132

Memperbarui:

Tim Selenium diperbaiki dalam versi terbaru. Untuk hampir semua lingkungan, perbaikannya adalah:

pip install -U selenium

Tidak jelas di versi mana itu diperbaiki (tampaknya r13122 ), tetapi yang pasti dengan 2.26.0 (saat ini pada saat pembaruan) itu diperbaiki.


Error ini berarti waktu _wait_until_connectable telah habis, karena karena alasan tertentu, kode tidak dapat terhubung ke ekstensi webdriver yang telah dimuat ke firefox.

Saya baru saja melaporkan kesalahan ke selenium di mana saya mendapatkan kesalahan ini karena saya mencoba menggunakan proxy dan hanya 2 dari 4 perubahan yang dikonfigurasi di profil yang diterima oleh firefox, jadi proxy tidak dikonfigurasi untuk diajak bicara. ekstensi. Tidak yakin mengapa ini terjadi ...

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

Rachel
sumber
3
Menambahkan a sudodiperlukan jika tidak masuk sebagai root. Bagaimanapun, ini adalah penyelamat! Terima kasih!!
Abhranil Das
Ya, ini membantu untuk memperbaiki WebDriverException: Pesan: 'Tidak dapat memuat profil.
tom joy
5
@AbhranilDas Anda tidak perlu sudojika Anda menggunakan a virtualenv(yang mungkin harus Anda gunakan).
Kos
7
Tidak, solusi ini tidak berfungsi dengan Firefox 45.0b dan Selenium terbaru (2.5.1)
Alex GP
1
@ AlexG.P. Saya pertama kali menulis jawaban untuk pertanyaan ini 4,5 tahun yang lalu. Saya menduga sudah cukup waktu berlalu sehingga mungkin ada baiknya mengajukan pertanyaan baru. Jika ya, harap sertakan referensi untuk pertanyaan ini dan: a) versi Firefox dan Selenium yang Anda berikan di atas; b) OS Anda; c) versi pip Anda. Saya kira masalah Anda mungkin terkait dengan versi pip, karena itu telah berubah selama 5 tahun terakhir.
Rachel
31

Saya mengalami masalah yang sama setelah memutakhirkan Ubuntu ke 12.04.

Masalahnya ada di sisi paket dan telah diperbaiki di versi terbaru pustaka. Perbarui pustaka selenium. Untuk hampir semua lingkungan Python, ini adalah:

pip install -U selenium
pengguna1380597
sumber
Tidak tahu mengapa, tetapi memiliki selenium 2.28.0 Saya memiliki masalah yang sama dengan FireFox 22.0 dan 23.0 di Ubuntu. Hanya menurunkan firefox ke 18.0 berfungsi dengan baik untuk saya (tidak pernah memeriksa versi lain).
Dmitry
26

Saya menghadapi masalah yang sama dengan FF 32.0 dan Selenium selenium-2.42.1-py2.7.egg. Mencoba memperbarui selenium, tetapi ini sudah versi terbaru. Solusinya adalah menurunkan versi Firefox ke versi 30. Berikut prosesnya:

#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

Ini menyelesaikan semua masalah, dan kombinasi ini bekerja lebih baik!

Mijo
sumber
ini memperbaiki pengaturan saya !!
Macumbaomuerte
Bagaimana cara menurunkan versi Firefox di Mac saya? Saya menggunakan scrapy / selenium di mactop saya di 'virtualenv' dan mengalami kesalahan yang sama. Saya pikir jika saya menurunkan versi pada mac saya, itu akan memperbaikinya.
brkr
8

Sebagai perpanjangan dari jawaban Jeff Hoye , cara yang lebih 'Pythonic' adalah subclass webdriver.firefox.firefox_profile.FirefoxProfilesebagai berikut:

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

Kemudian, untuk membuat driver Anda:

driver = webdriver.Firefox(firefox_profile=CygwinFirefoxProfile())
Joel Cross
sumber
5

Jika pip install -U selenium tidak berhasil (dalam kasus saya), coba turunkan versi Firefox Anda ke versi sebelumnya.

Saya memiliki Firefox 49.0 dan diturunkan ke 45.0 untuk memastikan versinya didukung oleh selenium. Itu bekerja dengan sempurna.

Berikut cara cepat untuk menurunkan versi ke Firefox 45.0:

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

Semoga ini membantu.

Chris
sumber
4

Jika Anda menjalankan webdriver dari cygwin, masalahnya adalah jalur ke profil masih dalam format POSIX yang membingungkan program windows. Solusi saya menggunakan cygpath untuk mengubahnya menjadi format Windows.

di file / metode ini: selenium.webdriver.firefox.firefox_binary.launch_browser ():

menggantikan:

    self._start_from_profile_path(self.profile.path)

dengan:

    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)

Karena Python bahkan tidak dekat dengan bahasa pemrograman utama saya, jika seseorang dapat merekomendasikan pendekatan yang lebih pythonic, mungkin kita dapat mendorongnya ke dalam distribusi. Ini pasti akan berguna jika berfungsi di cygwin langsung dari kotak.

Jeff Hoye
sumber
3

Saya memiliki masalah yang sama dan percaya itu adalah kombinasi selenium / Firefox yang salah. Ternyata izin .mozilla / folder saya hanya dapat diakses oleh pengguna root. Melakukan chmod 770 ~/.mozilla/triknya. Saya menyarankan untuk memastikan ini bukan masalahnya sebelum memecahkan masalah lebih lanjut.

chillwx
sumber
1

pip install -U selenium

Saya memiliki masalah yang sama dengan Firefox 34.0.5 (Dec 1, 2014)dan memutakhirkan Selenium dari 2.42.1untuk 2.44.0menyelesaikan masalah saya.

Namun, saya telah melihat masalah ini lagi, saya pikir dengan 2.44.0, dan peningkatan lainnya memperbaikinya. Jadi saya bertanya-tanya apakah itu mungkin diperbaiki hanya dengan mencopot pemasangan dan kemudian menginstal ulang. Jika demikian, saya tidak yakin apa yang mengindikasikan masalah yang mendasarinya.

Rob Bednark
sumber
Saya memiliki masalah yang sama persis dengan 2.44 dan ff35 di windows
pylover
0

Saya menggunakan selenium 2.53 dan firefox versi 55.0. Saya memecahkan masalah ini dengan menginstal versi firefox yang lebih lama (46.0.1) karena selenium 2.53 tidak akan berfungsi untuk firefox versi 47.0 & yang lebih baru.

Rashid
sumber
-1

Ini bukan solusi yang tepat tetapi berhasil untuk saya, jika seseorang dapat meningkatkan, saya akan senang mengetahuinya. Saya hanya menjalankan script saya sebagai root: sudo python myscript.py. Saya kira saya bisa menyelesaikannya dengan mengubah file default profil atau direktori bisa bekerja.


sumber