使用casperjs捕获弹出窗口并下载URL

时间:2015-09-03 14:45:21

标签: javascript web-scraping phantomjs screen-scraping casperjs

我正在尝试使用casperjs(phantomjs上的包装器)从aspx站点抓取一个表。我需要的一个表项是一个链接,它打开一个新页面并下载PDF。 TD标签的内容是:

<input type="image" src="images/document.png" alt="View Document" onclick="javascript:__doPostBack('ctl00$mbody$tcManageDocs$tpViewDocs$gv_formData','View$1');return false;">

点击后,我确定它会打开一个新窗口来下载文件。使用wireshark,我已经捕获了对__doPostBack POST请求的响应(的相关部分):

<script type="text/javascript">
//<![CDATA[
window.open('documents/path/to/document.pdf', 'popup_window', 'width=1024,height=768,left=10,top=10,resizable=yes,scrollbars=1,menubar=yes,toolbar=yes');popup_window.print();//]]>
</script>
<script type='text/javascript'>new Sys.WebForms.Menu({ element: 'Menu1', disappearAfter: 500, orientation: 'horizontal', tabIndex: 0, disabled: false });</script></form>

但是,在执行链接时:

    this.click('#mbody_tcManageDocs_tpViewDocs_gv_formData > tbody:nth-child(1) > tr:nth-child(2) > td:nth-child(1) > input:nth-child(1)');

我遇到页面错误:ReferenceError:尝试运行时无法找到变量:popup_window 错误。

我有什么方法可以使用javascript捕获窗口吗?

我是否需要在页面上下文或phantomjs / casperjs上下文中捕获它?

我想要捕获的相关数据仅为url(作为文档/ path / to / document.pdf&#39;)作为文本流:我宁愿不实际执行下载以减少带宽/ server需求和脚本执行时间。

这是我的第一次拼抢尝试,而且我在尝试学习javascript的同时,我很难理解如何继续:即使是一些方向,尝试什么也会有所帮助。

编辑:我已经捕获了Artjom评论的事件:我没有收到有关资源消息的任何通知,但是在 popup.loaded 我得到了以下内容:

popup.loaded
{
    "objectName": "WebPage",
    "title": "",
    "frameTitle": "",
    "content": "<html><head></head><body></body></html>",
    "frameContent": "<html><head></head><body></body></html>",
    "url": "about:blank",
    "frameUrl": "about:blank",
    "loading": false,
    "loadingProgress": 100,
    "canGoBack": false,
    "canGoForward": false,
    "plainText": "",
    "framePlainText": "",
    "libraryPath": "/usr/share/casperjs/bin",
    "offlineStoragePath": "/home/rob/.qws/share/data/Ofi Labs/PhantomJS",
    "offlineStorageQuota": 5242880,
    "viewportSize": {
        "height": 300,
        "width": 400
    },
    "paperSize": {},
    "clipRect": {
        "height": 0,
        "left": 0,
        "top": 0,
        "width": 0
    },
    "scrollPosition": {
        "left": 0,
        "top": 0
    },
    "navigationLocked": false,
    "customHeaders": {},
    "zoomFactor": 1,
    "cookies": [],
    "windowName": "popup_window",
    "pages": [],
    "pagesWindowName": [],
    "ownsPages": true,
    "framesName": [],
    "frameName": "popup_window",
    "framesCount": 0,
    "focusedFrameName": "popup_window"
}

casperjs / phantomjs中有什么东西失败了吗?我开始怀疑上述错误是主要问题之一。当我等待弹出一段时间后,casperjs超时,我没有得到进一步的资源事件。

0 个答案:

没有答案