Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

126
Vistas
Obtener solicitud de ajax con pesadilla js

Entonces, estoy usando el js de la pesadilla, y me gusta simular un procedimiento de inicio de sesión, para hacerlo, uso el js de la pesadilla así.

 function testiiing(){ nightmare .goto('http://localhost:4200/login') .type('#name', 'test') .type('#pwd', 'test') .click('#log') .evaluate(function() { return //something }) .then(function(result) { console.log(result); }) .then(function() { console.log('done'); }) .catch(function(error){ console.error('an error has occurred: ' + error); }); }

La cuestión es que me gustaría cambiar "//algo" por algo que me devuelva "name=test&pwd=test" (así que la solicitud de publicación de ajax), ¿alguien puede ayudarme o decirme si es posible?

about 4 years ago · Santiago Trujillo
2 Respuestas
Responde la pregunta

0

no tengo experiencia con pesadilla js, pero como ha etiquetado jQuery, simplemente use .serialize()

https://api.jquery.com/serialize/

El método .serialize() crea una cadena de texto en notación codificada de URL estándar. Puede actuar sobre un objeto jQuery que tiene controles de formulario individuales seleccionados, como <input> , <textarea> y <select> : $( "input, textarea, select" ).serialize();

Ejemplo:

 $( "form" ).on( "submit", function( event ) { event.preventDefault(); console.log( $( this ).serialize() ); });

Esto debería hacer exactamente lo que estás buscando.

Para su ejemplo específico, también busque en .serializeArray()

about 4 years ago · Santiago Trujillo Denunciar

0

Sé que esto es viejo, pero esto también fue complicado para mí. Esto es lo que estoy usando y funciona:

 test(){ let selector = "#twd"; return this.nightmare .goto("https://time.is/") .inject("js", "jquery.js") //actually injects jquery, which doesn't exist on the site .evaluate((selector) =>{ return new Promise((resolve, reject) =>{ // resolve(document.querySelector(selector).innerHTML) $.ajax({ url: "https://jsonplaceholder.typicode.com/posts", type: "POST", data: {foo: "bar"}, }) .then(response =>{ resolve(response) //resolve the promise from browser and resume execution in node }) }) }, selector) //can only pass in one param .then(result =>{ let x = result; }) } //result = {id: some number}

Observe el selector, debe ser un parámetro o un objeto si desea más valores clave. En realidad, no se usa en este ejemplo de mierda, pero es solo un ejemplo de mierda.

Y por alguna razón, el estilo js dentro de la devolución de llamada de evaluación podría manejar el código de estilo es6.

Además, la cadena de promesa interna es completamente diferente a la externa. Todo dentro de la evaluación se ejecuta en electron, NO en su servidor de nodo. Pero una vez que resuelve, se recupera en node.

about 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda