Ich verwende Nodejs und npm Modul Phantom eine Webseite zu verschrotten. Die Informationen, die ich brauche, werden mit einer Ajax-Anfrage platziert, wenn ein Bereich angeklickt wird.Klicken Sie nicht auf Element in Phantom
Ziel: In site 'www.academiadasapostas.com/stats/team/961#tab=t_stats' ich in 'Bundesliga' klicken mag Schaltfläche Info verschrotten.
Problem: Ich kann nicht direkt an Taste url gehen (www.academiadasapostas.com/stats/team/961#tab=t_stats & team_id = 961 & competition_id = 9 & page = 1) und I don Ich weiß nicht, wie man in Phantom auf den Button klickt.
Mein Code:
var url = 'https://www.academiadasapostas.com/stats/team/961#tab=t_stats';
phantomInstance.createPage()
.then((page) => {
phantomPage = page;
return page.open(url);
})
.then((status) => {
phantomPage.evaluate(function() {
//trying click
return document.querySelectorAll('[data-id]')[1].click();
})
.then(function(){
return phantomPage.property('content');
})
.then((content) => {
// handle content of page
});
});
HTML-Snapshot:
<td>
<span class="competition all " data-id="0" onclick="teamAjax_Filterchange(this)" style="float: left; display: none;">Tudo
</span>
<span class="competition " data-id="9" onclick="teamAjax_Filterchange(this)">
<ul class="flag" title=""><li class="ar a80" title=""></li><li class="co c1"></li><li class="co chover"></li></ul>Bundesliga
</span>
<span class="competition " data-id="10" onclick="teamAjax_Filterchange(this)">
<ul class="flag" title=""><li class="ar a7" title=""></li><li class="co clc"></li><li class="co chover"></li></ul>UEFA Champions League
</span>
</td>
EDIT 1: ich dies versuchen, aber die Arbeit scheint nicht zu:
phantomPage.evaluate(function() {
var ev = document.createEvent("MouseEvent");
ev.initMouseEvent(
"click",
true /* bubble */, true /* cancelable */,
window, null,
0, 0, 0, 0, /* coordinates */
false, false, false, false, /* modifier keys */
0 /*left*/, null
);
return document.querySelectorAll('[data-id]')[1].dispatchEvent(ev);
})
Haben Sie die Vorschläge in [dieser Frage] (http://stackoverflow.com/q/15739263/1816580) versucht? Sie müssten sie so portieren, wie es für die Bridge geschrieben ist. –
Ja, ich versuche die dispatchEvent suggestion, aber es scheint nicht funktioniert auch. (Neuer Code: EDIT 1) –