Selenium: FirefoxProfile ngoại lệ Không thể tải cấu hình


96

Mỗi câu hỏi trước đây tôi được cập nhật lên phiên bản 2.0.1 Selenium Nhưng bây giờ tôi có lỗi khác, ngay cả khi các file hồ sơ tồn tại dưới /tmp/webdriver-py-profilecopy:

  Tệp "/home/sultan/Repository/Django/monitor/app/request.py", dòng 236, đang hoạt động
    browser = Firefox (hồ sơ)
  Tệp "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", dòng 46, trong __init__
    self.binary, timeout),
  Tệp "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", dòng 46, trong __init__
    self.binary.launch_browser (self.profile)
  Tệp "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", dòng 44, trong launcher_browser
    self._wait_until_connectable () 
  Tệp "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", dòng 87, trong _wait_until_connectable
    raise WebDriverException ("Không thể tải hồ sơ. Hồ sơ Dir:% s"% self.profile.path)
selenium.common.exceptions.WebDriverException: Không thể tải cấu hình. Hồ sơ Dir: / tmp / webdriver-py-profilecopy

Chuyện gì thế? Tôi có thể giải quyết vấn đề này như thế nào?

Câu trả lời:


132

Cập nhật:

Đã sửa nhóm Selenium trong phiên bản mới nhất. Đối với hầu hết mọi môi trường, cách khắc phục là:

pip cài đặt -U selen

Không rõ nó đã được sửa ở phiên bản nào (dường như là r13122 ), nhưng chắc chắn vào phiên bản 2.26.0 (hiện tại tại thời điểm cập nhật) nó đã được sửa.


Lỗi này có nghĩa là _wait_until_connectable đang hết thời gian chờ, vì một số lý do, mã không thể kết nối với phần mở rộng webdriver đã được tải vào firefox.

Tôi vừa báo cáo lỗi cho selenium trong đó tôi gặp lỗi này vì tôi đang cố sử dụng proxy và chỉ 2 trong số 4 thay đổi được định cấu hình trong cấu hình đã được firefox chấp nhận, vì vậy proxy không được định cấu hình để nói chuyện phần mở rộng. Không chắc chắn lý do tại sao điều này xảy ra...

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


3
Thêm một sudolà bắt buộc nếu không đăng nhập với quyền root. Dù sao thì đây cũng là một cái phao cứu sinh! Cảm ơn!!
Abhranil Das

Có, nó giúp sửa lỗi WebDriverException: Thông báo: 'Không thể tải cấu hình.
tom joy

5
@AbhranilDas Bạn không cần sudonếu bạn đang sử dụng virtualenv(mà bạn có thể nên sử dụng).
Kos,

7
Không, giải pháp này không hoạt động với Firefox 45.0b và Selenium mới nhất (2.5.1)
Alex GP

1
@ AlexG.P. Lần đầu tiên tôi viết câu trả lời cho câu hỏi này cách đây 4,5 năm. Tôi nghi ngờ rằng đã đủ thời gian để đặt ra một câu hỏi mới. Nếu bạn làm vậy, hãy bao gồm tham chiếu đến câu hỏi này và: a) phiên bản Firefox và Selenium mà bạn đã cung cấp ở trên; b) hệ điều hành của bạn; c) phiên bản pip của bạn. Tôi đoán rằng vấn đề của bạn có thể liên quan đến phiên bản pip, bởi vì điều đó đã thay đổi trong 5 năm qua.
Rachel

31

Tôi đã gặp vấn đề tương tự sau khi nâng cấp Ubuntu lên 12.04.

Sự cố nằm ở phía gói và đã được khắc phục trong phiên bản mới nhất của thư viện. Chỉ cần cập nhật thư viện selen. Đối với hầu hết các môi trường Python, đây là:

pip install -U selenium

Không biết tại sao, nhưng có selen 2.28.0, tôi gặp vấn đề tương tự với FireFox 22.0 và 23.0 trên Ubuntu. Tôi chỉ hạ cấp firefox xuống 18.0 hoạt động tốt (không bao giờ kiểm tra các phiên bản khác).
Dmitry

26

Tôi gặp phải vấn đề tương tự với FF 32.0 và Selenium selen-2.42.1-py2.7.egg. Đã cố gắng cập nhật selen, nhưng nó đã là phiên bản mới nhất. Giải pháp là hạ cấp Firefox xuống phiên bản 30. Đây là quy trình:

#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

Điều này đã giải quyết tất cả các vấn đề và sự kết hợp này hoạt động tốt hơn!


điều này đã sửa thiết lập của tôi !!
Macumbaomuerte

Làm cách nào để hạ cấp Firefox trên máy Mac của tôi? Tôi đang sử dụng scrapy / selen trên mactop của mình trên 'virtualenv' và gặp lỗi tương tự. Tôi nghĩ nếu tôi hạ cấp trên mac của mình thì nó sẽ sửa được.
brkr

8

Như một phần mở rộng cho câu trả lời của Jeff Hoye , một cách 'Pythonic' hơn sẽ là phân lớp webdriver.firefox.firefox_profile.FirefoxProfilenhư sau:

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

Sau đó, để tạo trình điều khiển của bạn:

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

5

Nếu pip install -U seleniumkhông hoạt động (trong trường hợp của tôi là không), hãy thử hạ cấp Firefox của bạn xuống phiên bản trước.

Tôi đã có Firefox 49.0 và đã hạ cấp xuống 45.0 để đảm bảo rằng phiên bản này được hỗ trợ bởi selen. Nó hoạt động hoàn hảo sau đó.

Đây là một cách nhanh chóng để hạ cấp xuống Firefox 45.0:

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

Hi vọng điêu nay co ich.


4

Nếu bạn đang chạy webdriver từ cygwin, vấn đề là đường dẫn đến hồ sơ vẫn ở định dạng POSIX gây nhầm lẫn cho các chương trình windows. Giải pháp của tôi sử dụng cygpath để chuyển đổi nó thành định dạng Windows.

trong tệp / phương thức này: selenium.webdriver.firefox.firefox_binary.launch_browser ():

thay thế:

    self._start_from_profile_path(self.profile.path)

với:

    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)

Vì Python thậm chí không gần với ngôn ngữ lập trình chính của tôi, nếu ai đó có thể đề xuất một cách tiếp cận pythonic hơn có thể chúng tôi có thể đẩy nó vào bản phân phối. Nó chắc chắn sẽ rất hữu ích nếu nó hoạt động trong cygwin ngay lập tức.


3

Tôi đã gặp vấn đề tương tự và tin rằng đó là sự kết hợp sai của selen / Firefox. Hóa ra rằng quyền .mozilla / thư mục của tôi chỉ người dùng gốc mới có thể truy cập được. Làm chmod 770 ~/.mozilla/đã thực hiện thủ thuật. Tôi khuyên bạn nên đảm bảo đây không phải là vấn đề trước khi khắc phục sự cố thêm.


1

pip install -U selenium

Tôi đã gặp vấn đề tương tự Firefox 34.0.5 (Dec 1, 2014)và nâng cấp Selenium từ 2.42.1để 2.44.0giải quyết vấn đề của mình.

Tuy nhiên, tôi đã gặp lại vấn đề này một lần nữa, tôi nghĩ với 2.44.0 và một bản nâng cấp khác đã khắc phục sự cố này. Vì vậy, tôi tự hỏi liệu nó có thể được khắc phục bằng cách gỡ cài đặt và sau đó cài đặt lại hay không. Nếu vậy, tôi không chắc điều đó sẽ chỉ ra vấn đề cơ bản là gì.


Tôi gặp vấn đề chính xác tương tự với 2,44 và ff35 trong windows
pylover

0

Tôi đang sử dụng selen 2.53 và firefox phiên bản 55.0. Tôi đã giải quyết vấn đề này bằng cách cài đặt phiên bản firefox cũ hơn (46.0.1) vì selenium 2.53 sẽ không hoạt động cho firefox phiên bản 47.0 trở lên.


-1

Đây không phải là một giải pháp thích hợp nhưng đã hiệu quả với tôi, nếu ai đó có thể cải thiện, tôi rất vui được biết. Tôi chỉ cần chạy script của tôi như là người chủ: sudo python myscript.py. Tôi đoán tôi có thể giải quyết bằng cách thay đổi tệp hoặc thư mục mặc định của hồ sơ có thể hoạt động.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.