6

Я пытаюсь загрузить (сохранить на диск) файл CSV с помощью PhantomJS из диалогового окна. Используя профиль firefox, это было бы довольно просто, установив свойства профиля браузера. Любые предложения, как файл excel можно загрузить в phantomjs?Selenium-Phantomjs загрузить csv

Вот как это будет сделано с помощью драйвера FireFox:

profile = webdriver.firefox.firefox_profile.FirefoxProfile() 
profile.set_preference("browser.download.folderList",2) 
profile.set_preference("browser.download.dir",self.opts['output_dir']) 
profile.set_preference('browser.helperApps.neverAsk.saveToDisk', ('application/octet-stream,application/msexcel')) 

Я использую драйвер Phantomjs:

webdriver.PhantomJS(service_args=['--ignore-ssl-errors=true','--local-storage-path=/tmp']) 

и ищет способ, чтобы установить свойства, которые могут переопределять сохранить на диск и задайте тип данных MIME. В настоящее время без установки свойств, драйвер PhantomJS не загружает файл.

Я прочитал ссылки об избежании диалогового окна и т. Д., Но в этом случае это необходимо.

+0

Что происходит, когда вы пытаетесь загрузить файл таким образом? – That1Guy

+0

Я привел пример того, как он будет работать в Firefox. Я ищу способ установить свойства для драйвера PhantomjS, который может переопределить сохранение на диск и установить тип данных MIME. В настоящее время без установки свойств, драйвер PhantomJS не загружает файл. – Devesh

+0

Существует вилка [phantomjs] (https://github.com/Vitallium/phantomjs/tree/download-support), которая, по-видимому, обеспечивает поддержку загрузки, см. [Это групповое сообщение] (https://groups.google.com !/форум/# тзд/phantomjs/JChUakj - 24/epby47h3ZGAJ) – Faiz

ответ

0

Я недавно боролся с подобной проблемой. Однако в итоге я переключил веб-драйвер, потому что он дает возможность легко получать доступ к сетевому трафику. Это означает, что если файл не находится непосредственно на странице и скорее переносится, вы не видите его в фантоме. Есть несколько человек, работающих над работой, но я обнаружил, что большинство моих файлов были переданы, и поэтому мне было легче собирать сетевой трафик с помощью веб-драйвера + firebug + net export.

Однако в phantomjs очень Hacky способ сделать это было бы что-то вроде этого:

phantomjs.exe file_to_run.js > my_log.txt 

Где вы просто сохранить содержимое консоли в файл. Однако вы, вероятно, получите ошибки и другие сообщения в вашем файле. Вы можете очистить его, так как вы ищете только cdv.

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

Хороший пример использования casperJS для загрузки файлов можно найти здесь: casperjs download csv file

Я считаю, что основная проблема с использованием Каспера, однако, что большие файлы не очень хорошо поддерживается. Есть ли конкретная причина, по которой вы предпочитаете использовать безгласный браузер?