PhantomJS неправильно загружает скрипты с html-страницы с тестами

PhantomJS не загружает скрипты, поскольку пытается загрузить их по следующему пути: file:///[src, указанный в html-файле]. В html-файле пути к скриптам относительные, и я не хочу делать их абсолютными (делал по этому примеру http://thomasardal.com/tag/phantomjs/). Так, например, на html-странице у меня есть <script type="text/javascript" src="jquery-1.7.0.js"></script>, и PhantomJS пытается загрузить его из файла:///jquery-1.7.0.js, которого не существует. Как заставить PhantomJS загружать скрипты с правильного пути?


person petrov.alex    schedule 13.02.2012    source источник


Ответы (1)


У вас такая же проблема, и это похоже на ошибку в phantomjs.

Нашел один способ обойти проблему:

Внутри вашей функции page.open вы можете вызвать page.injectJs(FILENAME) - и FILENAME будет работать с относительным путем из пути выполнения или page.libraryPath (по умолчанию там, где находится первый аргумент js)

person Daniel    schedule 14.02.2012
comment
ну, я хотел бы иметь отдельные файлы html для отдельных тестов модулей и сохранить js, который загружает эти страницы как можно более общим. Я нашел аналогичный способ: ловлю onResourceRequested, параметром является запрос, в котором хранится URL-адрес запроса, затем я вызываю функцию injectJs, предоставляя путь как libraryPath+request.url. но все равно выглядит халтурно( - person petrov.alex; 15.02.2012
comment
Я пробовал с resourceRequested при загрузке html из файла с использованием относительного URL-адреса, но он никогда не вызывался :-( Я переключился на жасмин, который не нуждается в браузере (и, как личное примечание, имеет лучший синтаксис). Это мне подошло так как js на самом деле не так уж зависит от dom-манипуляций.. поэтому использовал только injectJs, и это работало нормально, и его было так же легко подключить к teamcity - person Daniel; 17.02.2012
comment
На фантомных сайтах есть темы по этим проблемам, за которыми стоит следить: code.google.com/p/phantomjs/issues/ и code.google.com/p/phantomjs/issues/detail?id=171&can=8 - person Daniel; 17.02.2012