Я использую Python 2.7.3
, selenium 2.48.0
на Raspbian
OS (безголовое устройство). Версия Iceweasel/Firefox
: 38.4
.Python Selenium: ошибка профиля Firefox
импортировать selenium
как это:
from selenium import webdriver
Тогда я определяю драйвера:
browser = webdriver.Firefox()
Когда я запускаю этот код он работает в течение примерно 15 секунд и выдает эту ошибку:
Traceback (most recent call last):
File "Dbfull3.py", line 114, in <module>
data=getdata()
File "Dbfull3.py", line 17, in getdata
browser = webdriver.Firefox()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 77, in __init__
self.binary, timeout),
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 49, in __init__
self.binary.launch_browser(self.profile)
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 68, in launch_browser
self._wait_until_connectable()
File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_binary.py", line 103, in _wait_until_connectable
raise WebDriverException("Can't load the profile. Profile "
selenium.common.exceptions.WebDriverException: Message: Can't load the profile. Profile Dir: %s If you specified a log_file in the FirefoxBinary constructor, check it for details.
При исследовании этой ошибки я нашел похожие случаи от StackOverflow
и другие места, но многие из них относятся к Windows
. Одним из предлагаемых решений было использование другой версии Firefox/Iceweasel
, но я не смог найти другие версии для моего OS
.
Я также пытался выполнить мой код как root
, но результат такой же.
Desipite ошибки, каждый раз, когда выполнение этой команды новый профиль получает создан для /tmp
:
[email protected] ~/bin $ ls -l /tmp/tmpiV4R0H/
total 11952
drwxr-xr-x 2 user user 4096 Dec 10 18:42 amd64
-rw-r--r-- 1 user user 183494 Dec 10 18:42 blocklist.xml
drwx------ 2 user user 4096 Dec 10 18:43 bookmarkbackups
drwx------ 4 user user 4096 Dec 10 18:42 cache2
-rw------- 1 user user 65536 Dec 10 18:43 cert8.db
-rw------- 1 user user 188 Dec 10 18:42 compatibility.ini
-rw-r--r-- 1 user user 229376 Dec 10 18:42 content-prefs.sqlite
-rw-r--r-- 1 user user 524288 Dec 10 18:43 cookies.sqlite
-rw------- 1 user user 4182 Dec 10 18:43 directoryLinks.json
drwxr-xr-x 3 user user 4096 Dec 10 18:42 extensions
-rw-r--r-- 1 user user 259 Dec 10 18:42 extensions.ini
-rw------- 1 user user 2154 Dec 10 18:43 extensions.json
drwx------ 2 user user 4096 Dec 10 18:42 gmp
-rw------- 1 user user 16384 Dec 10 18:42 key3.db
lrwxrwxrwx 1 user user 16 Dec 10 18:42 lock -> 127.0.1.1:+29581
-rw-r--r-- 1 user user 3319 Dec 10 18:43 mimeTypes.rdf
-rw-r--r-- 1 user user 65536 Dec 10 18:42 permissions.sqlite
-rw-r--r-- 1 user user 10485760 Dec 10 18:43 places.sqlite
-rw-r--r-- 1 user user 32768 Dec 10 18:42 places.sqlite-shm
-rw-r--r-- 1 user user 557496 Dec 10 18:43 places.sqlite-wal
-rw------- 1 user user 5020 Dec 10 18:43 prefs.js
-rw------- 1 user user 16384 Dec 10 18:42 secmod.db
-rw------- 1 user user 53 Dec 10 18:43 sessionCheckpoints.json
drwxr-xr-x 2 user user 4096 Dec 10 18:42 startupCache
drwx------ 2 user user 4096 Dec 10 18:43 userumbnails
-rw-r--r-- 1 user user 3504 Dec 10 18:42 user.js
drwxr-xr-x 2 user user 4096 Dec 10 18:42 webapps
drwxr-xr-x 2 user user 4096 Dec 10 18:42 x86
Что я мог сделать, чтобы избавиться от этой ошибки?
EDIT: Я также создал виртуальный дисплей, чтобы запустить Firefox. Этот код выполняется перед браузером.
from pyvirtualdisplay import Display
display = Display(visible=0, size=(640, 480))
display.start()
Я думаю, что эта часть в порядке, потому что перед добавлением этих строк Selenium дал ошибку в отсутствии дисплея. С помощью этого кода Firefox запускается как минимум достаточно, чтобы создать некоторые файлы профилей.
Также Firefox начинается, когда я делаю:
Xvfb :99
export DISPLAY=:99
firefox
(Firefox just sits there, but does not give errors.)
edit2: Я также попытался использовать Chromium
вместо Firefox
, но это не сработало, потому что их WebDriver для Selenium
не работает с Raspbian
.
"use PhantomJS" не является ответом –