2013-12-19 2 views
2

У меня проблема с CasperJS (версия 1.1.0-beta3) и PhantomJS (версия 1.9.2). Я написал сценарий на своей рабочей машине, и он работает нормально. Я хочу, чтобы этот скрипт работал на другой машине (тестовой машине), поэтому я сделал репо на SVN на сервере и сопоставил с ним сетевой диск с тестовой машины. В репо у меня есть мой скрипт, содержимое извлеченного ZIP-файла CasperJS и phantomjs.exe. Я также обновил переменную системы PATH на тестовой машине.CasperJS может получить доступ к элементам браузера в одной системе, но не другой

Я сопоставил тот же сетевой диск на своей локальной машине, где раньше работал. Он по-прежнему работает нормально, даже с сетевого диска. Однако он не будет работать на тестовой машине. CasperJS и PhantomJS работают нормально, но сценарий, похоже, не имеет доступа к сайту. Все мои записи возвращаются пустым, и они не могут найти элементы управления.

Сайт, на который я пытаюсь получить доступ, - https://admin.surescripts.net. Прямо сейчас, все, что я пытаюсь сделать, это войти.

Если я напишу совершенно новый тест, чтобы попытаться выйти в Google, Каспер может выйти на сайт, чтобы просмотреть его.

Я попытался выполнить команду wait, чтобы проверить возникновение проблем времени и запустить ее в другой среде на одном и том же сайте. Не повезло. Что может пойти не так?

Вот выход CMD из испытательной машины:

Z:\Automated Entry>casperjs automatedentry.js 
CasperError: Errors encountered while filling form: form not found 
    Z:/CasperUtils/CasperJS/modules/casper.js:802 in fillForm 
    Z:/CasperUtils/CasperJS/modules/casper.js:862 in fillNames 
    Z:/Automated Entry/automatedentry.js:51 
    Z:/CasperUtils/CasperJS/modules/casper.js:1553 in runStep 
    Z:/CasperUtils/CasperJS/modules/casper.js:399 in checkStep 
+0

Является ли сайт локальным или удаленным? Какой URL-адрес или путь вы используете для доступа к нему? – nrabinowitz

+0

Первым решением проблемы будет сетевой уровень. В linux я бы использовал wget или curl, чтобы убедиться, что URL-адреса могут быть достигнуты. (Быстрый поиск показывает, что по крайней мере есть «Wget for Windows».) –

+0

@ DarrenCook - я не думаю, что это проблема сети, поскольку тестовый компьютер имеет подключение к Интернету, и я могу получить доступ к сайту через браузер. –

ответ

1

я побежал Wget, а затем назначен лесозаготовок в onResourceRequested и onResourceReceived как Даррен предложил, и я обнаружил, что проблема была PhantomJS:

[warning] [phantom] Loading resource failed with status=fail: https://admin.surescripts.net/ 

Оказалось, что PhantomJS выкидывает ошибку из-за SSL страницы. Добавляя --ignore-ssl-errors=yes к командам cmd, когда я его запускал, исправлена ​​проблема и разрешался запуск скрипта.

Почему это происходит на моей тестовой машине, а не на моем местном, я до сих пор не знаю. Между тем, если у кого-то есть предложения о том, как записать этот флаг в мой скрипт, чтобы мне не приходилось вводить его каждый раз, когда я запускаю тест, это было бы желательно. Я уже пробовал использовать pageSettings: { ignoreSslErrors: true } в методе Каспера create, но это не похоже на трюк.

+1

http://docs.casperjs.org/ru/latest/modules/casper.html говорит, что параметр ignoreSSLErrors отсутствует. Я предполагаю, что он должен быть предоставлен Phantom во время запуска. Использовать пакетный файл Windows для сохранения необходимости набирать его каждый раз? –

Смежные вопросы