LINUX.ORG.RU

webdriver не запускается с заранее подготовленным профилем.

 , ,


0

1

Добрый день, уважаемые Лоровцы! У меня есть два скрипта, которые делают следующее:

- первый скрипт запускает браузер(Firefox), и перемещает его профиль с помощью shutil в нужный мне каталог, после этого делает quit либо close браузера

- второй скрипт запускает браузер с этим профилем, который был скопирован.

И как раз-таки проблема в том, что он не запускается. Если же пробовать просто «firefox -profile ./профиль --no-remote», то всё запускается, и виден вывод в stderr какого-то лога. Через selenium же - только ошибки.

Привожу лог:

>>> from selenium import webdriver
>>> pfdir = './firefox_prof'
>>> profile = webdriver.FirefoxProfile(profile_directory=pfdir)
>>> browser = webdriver.Firefox(profile)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/webdriver.py", line 59, in __init__
    self.binary, timeout),
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/extension_connection.py", line 45, in __init__
    self.profile.add_extension()
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_profile.py", line 92, in add_extension
    self._install_extension(extension)
  File "/usr/local/lib/python2.7/dist-packages/selenium/webdriver/firefox/firefox_profile.py", line 281, in _install_extension
    shutil.copytree(addon, addon_path, symlinks=True)
  File "/usr/lib/python2.7/shutil.py", line 177, in copytree
    os.makedirs(dst)
  File "/usr/lib/python2.7/os.py", line 157, in makedirs
    mkdir(name, mode)
OSError: [Errno 17] Файл существует: '/tmp/tmp1HSlXL/webdriver-py-profilecopy/extensions/fxdriver@googlecode.com'
>>> 

Вопрос: что я делаю не так? Всех нюансов работы с Selenium я пока что не знаю, так что прошу меня натолкнуть на истинный пусть. Всем заранее спасибо.

Я понимаю, что selenium пытается создать отдельный(кажется) профиль, но почему?

blablacon
() автор топика

И на самом деле хорошо бы было, если бы кто-нибудь подсказал мне, как правильно отобрать у selenium профиль браузера. Что ни гуглил - всё какая-то фигня. Пришлось городить огород такой последовательности: Запускаем браузер делаем все необходимые изменения в профиле(для этого я их и сохраняю) Находим в каталоге /tmp/ каталог, начинающийся с tmp*(вот такие адские костыли. Если там будет что-то ещё, начинающееся с tmp - всё коту под хвост). Потом перемещаем его(move) в нужный нам каталог, и закрываем браузер. Всё вроде перемещается, а заново из Селениума работать не хочет. Если есть какой-то уже готовый механизм, или фича в самом Селениуме, которую я не смогу найти - помогите пожалуйста.

blablacon
() автор топика

Запускаешь сервер:

java -jar selenium-server-standalone-2.38.0.jar -Dwebdriver.firefox.profile="selen"

В коде подсоединяешься к серверу, он использует данный профиль. Если запускать сервер без опций, будет генериться временный профиль и это правильно с точки зрения чистоты тестовых данных.

Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 1)
Ответ на: комментарий от Lordwind

Проблема в том, что мне нужно динамично подгружать разные профили. Для этого я всё это и наворотил.

blablacon
() автор топика
Ответ на: комментарий от blablacon
self.driver = webdriver.Firefox(webdriver.FirefoxProfile("~/.mozilla/firefox/y09hlcva.selen"))

сорри, не посмотрел на язык, устал уже

Lordwind ★★★★★
()
Последнее исправление: Lordwind (всего исправлений: 1)

Возможно в том профиле, который ты собираешься использовать, уже добавлен экстеншин вебдрайвера.

Попробуй просто запустить с этим профилем фаерфокс и удалить экстеншин, если он есть.

shy
()
Ответ на: комментарий от shy

Удалил - и ничего. :( Может кто-нибудь ещё что-нибудь знает по этому поводу?

gIiIjony
()

Так что, господа, кто-нибудь знает как можно заставить selenium пользовать какой-нибудь отдельный профиль?

blablacon
() автор топика
18 июня 2016 г.
Ответ на: комментарий от blablacon

Такая же беда. Никак не подтягивается профиль...

profile = webdriver.FirefoxProfile("тут путь к профилю, пробовал разные")
driver = webdriver.Firefox(profile)


На запущенном через selenium firefox проверяю путь к текущему профилю, загружен тот, который лежит tmp…
Что за ерунда? Профиль не подтягивается… По какой причине это может происходить?
Перечитал кучу информации. Никакого результата. 

Третий день мучаюсь…
ArtemKrass
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.