Selenium + Firefox + Geckodriver не загружает jQuery

В настоящее время я пишу несколько модульных тестов для проекта Django.

Однако, когда Selenium загружает страницу, он не загружает jQuery, и я получаю это в geckodriver.log:

JavaScript error: http://localhost:59726/, line 370: ReferenceError: $ is not defined

Скрипт находится в теге head:

<script src="/static/scripts/jquery-1.9.1.min.js"></script>

Страница нормально загружается в Firefox. Любые идеи?

версия селена 3.14
geckodriver 0.21
firefox 61.0.1


person Vigrond    schedule 28.08.2018    source источник
comment
попробуйте удалить косую черту в начале значения src   -  person Sumithran    schedule 28.08.2018
comment
это не работает. но я обнаружил, что он будет загружать jquery из CDN, но не из / static. Он не будет загружать скрипты из /static. Невероятно запутанно. Опять работает в обычном браузере firefox, но селен отказывается загружать ‹скрипты› с локального ресурса   -  person Vigrond    schedule 28.08.2018


Ответы (1)


Здесь проблема многогранна:

  • Модульные тесты Django будут запускать не Nginx, а собственный внутренний веб-сервер. Этот веб-сервер работает с Debug = False и не будет обслуживать статические файлы. Таким образом, вам нужно будет использовать StaticLiveServerTestCase вместо LiveServerTestCase

  • В Django 2.0 есть ошибка, из-за которой StaticLiveServerTestCase не работает. ("Ни один тип не вызывается"). Обновите до Джанго 2.1

  • Статические файлы должны находиться в месте, где их может найти средство поиска приложений staticfiles. Просто иметь файлы в STATIC_ROOT недостаточно. Они должны находиться в папке приложения, например /project/app/static/. Так что да, вам, возможно, придется дублировать все ваши статические файлы.

После этого Selenium сможет загружать локальные ресурсы.

person Vigrond    schedule 28.08.2018