2015-11-04 33 views
1

我在刮一個奇怪的基於ASP的網站。我想下載一個XML文件。爲了正常下載,我填寫了一個表單,點擊「下載」,然後出現一個彈出窗口,文件自動下載(在Chrome和Firefox中)。從Casperjs中彈出下載

什麼似乎最終觸發下載的是一個GET請求到「www.HOST.content/xmlfile.aspx」 URL它得到一個「內容處置:附件」用文件名「xmldocumentIcareabout.xml」

雖然我可以在Chrome瀏覽器中使用開發者控制檯(在彈出頁面上)看到這個請求/響應,但我在Casperjs一側的'resource.requested'或'resource.received'中看不到這些事件。

我試過到目前爲止:

  • 顯式調用 'this.download(' www.HOST.content/xmlfile.aspx ')使用的形式
  • 後呼叫:' 這一點。下載('www.HOST.content/form.aspx',downloadPath,'POST',postBody)'其中'postBody'包含所有表單信息和__EVENT_TARGET嘗試使用this.open(' www.HOST.content/xmlfile.aspx')

什麼可以使用其他方法,以便我可以在Casperjs的彈出窗口中捕獲自動下載事件?

+0

你已經看到[這](http://stackoverflow.com/問題/ 19199641/casperjs-download-csv-file),對吧? –

+0

是的,我想我已經看到了所有相關的SO帖子,但沒有一個解決方案已經工作。由於文件下載是通過彈出窗口觸發的,它不會觸發'resource.received'事件偵聽器。是否有一種特定的方式來設置該偵聽器的彈出窗口,或者它應該跨越所有窗口? – pshee

+0

我不知道它是否適用於所有windows。你可以嘗試在'withPopup'回調中添加監聽器,但可能爲時已晚。PhantomJS下載總是非常棘手。 [fork PhantomJS版本](http://stackoverflow.com/a/31124037/1816580)哪裏有一個特定的文件下載監聽器。 –

回答

0

通過調用 '下載()' 在彈出畫面中(在 '則()' 功能 'withPopup()' 固定