Ich versuche, mit phantomJS (was übrigens ein großartiges Tool!) Ein Formular für eine Seite zu senden, für die ich Anmeldeinformationen habe, und dann den Inhalt der Zielseite an stdout auszugeben. Ich kann mit Phantom auf das Formular zugreifen und seine Werte erfolgreich festlegen, bin mir jedoch nicht ganz sicher, wie die richtige Syntax lautet, um das Formular zu senden und den Inhalt der nachfolgenden Seite auszugeben. Was ich bisher habe ist:
var page = new WebPage();
var url = phantom.args[0];
page.open(url, function (status) {
if (status !== 'success') {
console.log('Unable to access network');
} else {
console.log(page.evaluate(function () {
var arr = document.getElementsByClassName("login-form");
var i;
for (i=0; i < arr.length; i++) {
if (arr[i].getAttribute('method') == "POST") {
arr[i].elements["email"].value="mylogin@somedomain.com";
arr[i].elements["password"].value="mypassword";
// This part doesn't seem to work. It returns the content
// of the current page, not the content of the page after
// the submit has been executed. Am I correctly instrumenting
// the submit in Phantom?
arr[i].submit();
return document.querySelectorAll('html')[0].outerHTML;
}
}
return "failed :-(";
}));
}
phantom.exit();
}
setInterval
Einsatzvar func = steps[testindex]
, dannconsole.log("step " + (testindex + 1) + ": " + funcName(func))
. Auf diese Weise können Sie den ausgeführten Schritten eine Beschreibung hinzufügen.