Estoy tratando de usar phantomJS (¡qué herramienta increíble por cierto!) Para enviar un formulario para una página para la que tengo credenciales de inicio de sesión, y luego enviar el contenido de la página de destino a stdout. Puedo acceder al formulario y establecer sus valores con éxito usando phantom, pero no estoy muy seguro de cuál es la sintaxis correcta para enviar el formulario y generar el contenido de la página siguiente. Lo que tengo hasta ahora es:
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
fuente
fuente

setIntervaluso internovar func = steps[testindex], entoncesconsole.log("step " + (testindex + 1) + ": " + funcName(func)). Esto le permite agregar una descripción a los pasos que se realizan.funcName. También me resultó más fácil cuando revisé una serie de páginas web y probé diferentes técnicas para representar la última página usandopage.render("output.png");.COOKIE, y mi pregunta es: * ¿esta cookie está disponible en elphantom.cookiesobjeto cuando el servidor devuelve la respuesta * ?Además, CasperJS proporciona una agradable interfaz de alto nivel para la navegación en PhantomJS, que incluye hacer clic en enlaces y completar formularios.
CasperJS
Actualizado para agregar el artículo del 28 de julio de 2015 que compara PhantomJS y CasperJS .
(¡Gracias al comentarista Sr. M!)
fuente
#someidque se complete en función de una ID.Enviar solicitudes POST sin procesar a veces puede ser más conveniente. A continuación puede ver el ejemplo original de post.js de PhantomJS
fuente
GETsolicitudes de manera similar (haciendo algo comopage.open(server, 'get', data, ...) no funcionará.Como se mencionó anteriormente, CasperJS es la mejor herramienta para llenar y enviar formularios. El ejemplo más simple posible de cómo llenar y enviar un formulario usando la función fill () :
fuente