Selenium Test запускается в командной строке, но не через планировщик заданий

У меня есть тест Python Selenium, который открывает firefox с Firebug и Netexport, входит на веб-страницу и ждет загрузки последней страницы в цепочке перенаправления. Этот тест отлично работает, когда я запускаю его из командной строки Windows, но когда я пытаюсь запустить его из планировщика заданий, в 9/10 случаях он не может найти профиль Firefox. Время от времени тест работает так, как ожидалось.

Я не очень хорошо знаком с причудами планировщика заданий, поэтому такое поведение не имеет для меня смысла.

Задача не скрыта, и я установил ее прямо сейчас, чтобы запускать только при входе в систему. Он настроен для работы на Windows Server 2012, на которой работает виртуальная машина.

Любые знания по этому вопросу будут весьма признательны. Ниже приведен код, который я считаю соответствующим, но дайте мне знать, если он недостаточен.

profile = webdriver.FirefoxProfile('path/to/default/profile')
# set up extensions/preferences
...
driver = webdriver.Firefox(firefox_profile=profile)
driver.get(<URL>)
# send_keys and other interactions
...

Я также пытался не указывать местоположение профиля и позволить селену создать временный профиль. Те же результаты.

Сообщения об ошибках:

Когда Firefox открывается, я получаю

Ваш профиль Firefox не может быть загружен. Он может отсутствовать или быть недоступным.

Исключение из селена составляет линия

WebDriverException: Сообщение: Не удается загрузить профиль. Каталог профиля: %s

Далее следует информация о проверке файла журнала (которого не существует)


person mstbaum    schedule 17.12.2015    source источник
comment
Это path/to/default/profile действительно актуальная вещь! Это место существует? Какой бы пользователь ни был привязан к запланированному заданию, есть ли у него доступ к этому местоположению?   -  person SiKing    schedule 17.12.2015
comment
@SiKing, местоположение определенно существует, и я попытался указать путь и позволить Selenium создать временный профиль. Оба способа работают в командной строке, и оба имеют одинаковые проблемы с планировщиком задач. Пользователь, запускающий задачу в планировщике, такой же, как и при запуске из командной строки.   -  person mstbaum    schedule 17.12.2015
comment
Как вы указываете путь? Глобальный или относительный?   -  person SiKing    schedule 17.12.2015
comment
@SiKing Абсолютный путь. Но, как я уже сказал, временный профиль Selenium (без указания пути) также не работает.   -  person mstbaum    schedule 17.12.2015
comment
Есть ли ошибка, связанная с не работает?   -  person SiKing    schedule 17.12.2015
comment
Когда Firefox открывается, я получаю, что ваш профиль Firefox не может быть загружен. Он может отсутствовать или быть недоступным. Исключение из селена соответствует строкам WebDriverException: Сообщение: не удается загрузить профиль. Каталог профиля: %s Далее следует информация о проверке файла журнала (которого не существует)   -  person mstbaum    schedule 17.12.2015
comment
Кажется довольно определенным: ваш профиль Firefox не может быть загружен. Он может отсутствовать или быть недоступным. Поскольку вы убеждены, что он существует, я бы поставил на недосягаемость.   -  person SiKing    schedule 17.12.2015
comment
Я пытаюсь понять, почему это так. Если вы не укажете путь, Selenium создаст новый временный профиль. Этот метод выдает те же ошибки. И если пользователь, запускающий задачу, такой же, как и при запуске командной строки, почему разрешения должны быть другими? И это не объясняет, почему запуск планировщика заданий время от времени, хотя и редко, работает так, как ожидалось.   -  person mstbaum    schedule 17.12.2015


Ответы (1)


После некоторого поиска в исходном коде/еще одной отладки я нашел основную причину и решение.

  • Указание каталога профиля Firefox только сообщает selenium, откуда скопировать существующий профиль. Он все равно создаст временный профиль.
  • Временный профиль создается в каталоге запуска задачи. В моем случае я запускал скрипт в командной строке из каталога скрипта, но планировщик заданий, начиная с Server 2008, запускает скрипты из C:\Windows\System32 по умолчанию.
  • Я указал каталог запуска в опции «Начать в» в действии задачи

Мне все еще кажется странным, что, хотя пользователь, выполняющий задачу, был администратором, кажется, что профиль не может быть прочитан из System32 (как подозревает @SiKing). Изменение места посадки решило проблему.

person mstbaum    schedule 17.12.2015