我正在尝试使用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超时,我没有得到进一步的资源事件。