2013-11-08 3 views
2

Я пытаюсь обрабатывать подсказки загрузки в Zombie.js, просматривая API. Я ничего не вижу, указав, как это сделать.Zombie.js - Загрузка файлов поддержки

В основном, что я пытаюсь сделать, это перейти по веб-сайту, требующему аутентификации, а затем нажать кнопку на сайте (без href), который автоматически загружает загрузку. Загруженный файл затем будет переименован и отправлен в указанную папку.

Есть ли способ достичь этого?

+0

Какие типы подсказок для загрузки? Вы говорите о диалоговом окне файлов Windows или используете Mac? Или это какая-то подсказка javascript? –

+0

Я думаю это возможно. Возможно, я смогу помочь вам, если вы мне точно сообщите, какие подсказки они есть. –

+0

Какой файл вы хотите скачать? Если это файл text/js, вы можете просто открыть браузер, получить содержимое отображаемой страницы и сохранить его в файле. Для изображений/исполняемых файлов/других я не знаю ... – MarcoL

ответ

0

возможно попробовать:

http://phantomjs.org

вы должны быть в состоянии управлять РОМ ... для загрузки.

https://github.com/ariya/phantomjs/wiki/Page-Automation

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

+0

Также стоит посмотреть на [CasperJS] (http://casperjs.org/), который находится поверх PhantomJS. Это особенно удобно для сохранения сеанса/cookie/аутентификации и имеет (базовую) поддержку для таких вещей, как запись файлов и/или загрузка их, я считаю. –

-1

Насколько я знаю и подробно рассмотрю API Zombie.js, я бы сказал, нет, это невозможно..

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

3

Zombie.js, кажется, не обеспечивает способ непосредственно делать то, что вы хотите, но внутренне он использует request для загрузки файлов, а затем испускает response события, которое вы можете прослушивать (см resources.coffee):

var browser = new Zombie(); 

browser.on('response', function(request, response) { 
    browser.response = response; 
}); 

browser.visit('http://test.com/', function() { 
    browser.clickLink('Download the file', function() { 
     // the 'response' handler should have run by now 
     var fileContents = browser.response.body; 
    }); 
}); 

Это, кажется, работает очень хорошо для меня.