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="[email protected]";
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();
}
javascript
forms
post
phantomjs
Vijay Boyapati
quelle
quelle
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.funcName
. Außerdem fand ich es einfacher, eine Reihe von Webseiten durchzugehen und verschiedene Techniken auszuprobieren, um die letzte Seite mit zu rendernpage.render("output.png");
.COOKIE
. Meine Frage lautet: *phantom.cookies
Ist dieses Cookie im Objekt verfügbar, wenn der Server eine Antwort zurückgibt * ?Außerdem bietet CasperJS eine schöne allgemeine Benutzeroberfläche für die Navigation in PhantomJS, einschließlich Klicken auf Links und Ausfüllen von Formularen.
CasperJS
Aktualisiert, um einen Artikel vom 28. Juli 2015 hinzuzufügen , in dem PhantomJS und CasperJS verglichen werden .
(Danke an Kommentator Mr. M!)
quelle
#someid
er basierend auf einer ID ausgefüllt wird .Das Senden von rohen POST-Anforderungen kann manchmal bequemer sein. Unten sehen Sie das Originalbeispiel von post.j von PhantomJS
quelle
GET
Anfragen ähnlich auszuführen (indem Sie so etwas tunpage.open(server, 'get', data, ...
).Wie oben erwähnt, ist CasperJS das beste Werkzeug zum Ausfüllen und Senden von Formularen. Einfachstes Beispiel für das Ausfüllen und Senden eines Formulars mit der Funktion fill () :
quelle