Я пытаюсь очистить сайт в aspx, который имеет кнопку js dopostBack. Одна из кнопок отвечает печатаемым представлением моей страницы, другая - кликом. CSV-файл.dopostback в PhantomJS/CasperJS
Я видел вопрос здесь, который описывает проблему загрузки CSV, но не отвечает на него: PhantomJS download using a javascript link
Так я сосредоточусь на том, чтобы получить представление печати в phantomJs, как это кажется проще (он показывает в браузере окно, там должен быть способ)
код кнопки:
<a id="ctl00_ctl00_ctl00_MainContentPlaceHolder_PrintResultsLinkButton"
title="Print Results" class="btn-blue"
href="javascript:
__doPostBack('ctl00$ctl00$ctl00$MainContentPlaceHolder$PrintResultsLinkButton','')
">
<span>Print Results</span>
</a>
я могу нажать на ссылку с Phantom/Casper, но не кажется, что это будет работать. Я решил, что запрос должен быть отправлен при нажатии кнопки со всеми заголовками, но я не могу понять, как получить ответ. Помогите?
мой код Casper, работая до того момента, когда я должен получить страницу результатов: https://gist.github.com/xShirase/7156131
Я также попытался оценить функцию JS, которая работает в хромированной консоли, но все-таки не дать мне результаты в phantom ...
Последняя попытка: я загружаю свою страницу в первый раз, чтобы получить значения куки-файлов и скрытых вводов, а затем попробуйте отправить запрос самостоятельно. Все тот же вывод в захвате, поэтому я знаю, что мой запрос в порядке, но почему бы мне не получить правильные результаты?
КОД:
casper.start();
capture = function(){
var url = 'http://www.cms.gov/apps/physician-fee-schedule/search/search-criteria.aspx';
casper.open(url).thenClick('a.btn',function() {
this.then(grabResults);
});
};
grabResults = function(){
this.echo(this.getCurrentUrl());
this.open('http://www.cms.gov/apps/physician-fee-schedule/search/search-results.aspx?Y=0&T=0&HT=2&CT=3&H1=00100&H2=11400&M=5').then(function(){
this.capture('page.png');
a = this.evaluate(function(){
var v = $('input:hidden#__VIEWSTATE').val();
var d = document.cookie;
return [v,d];
});
});
this.then(grabPRResults);
};
grabPRResults = function(){
this.open('http://www.cms.gov/apps/physician-fee-schedule/search/search-results.aspx?Y=0&T=0&HT=2&CT=3&H1=00100&H2=11400&M=5', {
method: 'post',
headers: {
'Host': 'www.cms.gov',
'Connection': 'keep-alive',
'Content-Length': '103902',
'Accept': 'text/html,application/xhtml+xml,application/xml;q=0.9,image/webp,*/*;q=0.8',
'Origin': 'http://www.cms.gov',
'User-Agent': 'Mozilla/5.0 (Windows NT 6.1; WOW64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/30.0.1599.101 Safari/537.36',
'Content-Type': 'application/x-www-form-urlencoded',
'Referer': 'http://www.cms.gov/apps/physician-fee-schedule/search/search-results.aspx?Y=0&T=0&HT=2&CT=3&H1=00100&H2=11400&M=5',
'Accept-Encoding': 'gzip,deflate,sdch',
'Accept-Language': 'fr,en-US;q=0.8,en;q=0.6',
'Cookie': a[1]
},
data: {
'__EVENTTARGET':'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$PrintResultsLinkButton',
'__EVENTARGUMENT':'',
'__LASTFOCUS':'',
'__VIEWSTATE':a[0],
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$PFSSResultsCPEWrapper_ClientState':'false',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$YearDropDown':'2013',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$TypeOfInfoDropDown':'pi',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$HCPCTypeDropDown':'range',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$CarrierTypeDropDown':'all',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$HCPC1Textbox':'00100',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$HCPC2Textbox':'11400',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$HCPC3Textbox':'',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$HCPC4Textbox':'',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$HCPC5Textbox':'',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$ModifierDropDown':'%',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$CarrierDropDown':'default',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$CarrierLocalityDropDown':'default',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$ResultsControl1$PFSSGridView$ctl01$ tbGotoPage':'',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$ResultsControl1$PFSSGridView$ctl01$PFSSGridViewtopddlTopPageSize':'10',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$ResultsControl1$PFSSGridView$ctl14$ tbGotoPageBottom':'',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$ResultsControl1$PFSSGridView$ctl14$PFSSGridViewbottomddlBottomPageSize':'10',
'ctl00$ctl00$ctl00$CMSGMainContentPlaceHolder$ToolContentPlaceHolder$PFSSContentPlaceHolder$DownloadsWidget1$DownloadsCPEWrapper_ClientState':'false'
}
}).then(function(){
this.wait(25000);
this.then(lest);
});
};
lest= function(){
this.capture('ppp.png');
};
casper.then(capture);
casper.run();