Autoclick su pulsante Conferma

di il
29 risposte

Autoclick su pulsante Conferma

Buonasera, sto usando un'estensione di Chrome per autocliccare il pulsante "Conferma" (stampa) di questa pagina (allegato "conferma stampa"). L'autoclick genera regolarmente un messaggio: 'La stampa è stata inoltrata' (cfr. allegato "stampa inoltrata"). Il problema è che lo script fa andare in loop la pagina, che si aggiorna all'infinito:

function autoClick() {
labels = document.querySelectorAll('label');
if (labels[1].innerText == "Modello di stampa")
{document.getElementsByClassName("button confirm")[0].click();}
}
var first = true;
if(first){
first=false;
autoClick ();
}


Ho anche provato con questa condizione:

  const elMessage = document.querySelector('.messages.confirms');
  if (elMessage && elMessage.textContent.trim() === 'La stampa è stata inoltrata') {
    document.querySelector('.button.confirm')?.click();
  }


In questo caso la pagina va in loop, ma dopo aver cliccato manualmente il pulsante "Conferma".
Mi aiutereste a risolvere? Grazie mille!

29 Risposte

  • Re: Autoclick su pulsante Conferma

    È lo script che è in loop poichè l'ultima istruzione autoClick() viene eseguita sempre , la funzione autoClick() “si chiama” all'infinito

  • Re: Autoclick su pulsante Conferma

    Provato anche così ma la pagina non reagisce:

    function autoClick() {

        labels = document.querySelectorAll('label');

        

        if (labels[1].innerText == "Modello di stampa")

        {

          let si = localStorage.getItem('stampaInoltrata');

          if(si == null) {

            localStorage.setItem('stampaInoltrata','true');

            let button = document.getElementsByClassName("button confirm")[0];  

            button.click();

          }             

        }

    }

    autoClick();

  • Re: Autoclick su pulsante Conferma

    11/12/2022 - E pluribus unum ha scritto:


    In questo caso la pagina va in loop, ma dopo aver cliccato manualmente il pulsante "Conferma".
    Mi aiutereste a risolvere? Grazie mille!

    Ne avevi già parlato in questa discussione: perché aprirne un'altra?

  • Re: Autoclick su pulsante Conferma

    Ho cambiato gli script, non volevo riagganciarmi tardi ad una vecchia discussione… 

  • Re: Autoclick su pulsante Conferma

    Ciao, ho guardato il file “conferma stampa.html”: il problema sta nel fatto che quando l'estensione di Chrome clicca automaticamente sul pulsante, viene effettuato un submit del form che contiene i due pulsanti. E ovviamente il submit è necessario per inviare i dati inseriti alla action impostata nel form.

    Quindi, effettuando il submit del form, poi viene automaticamente ricaricata la pagina e l'estensione effettua nuovamente un autoclick che genera un submit… e così via, all'infinito…

    La stessa identica cosa, ho verificato che accade se, invece di usare l'estensione, metti l'autoclick utilizzando una funzione assegnata a windows.onload).

    L'unica soluzione che effettivamente risolve il problema (l'ho provata) è quella di assegnare una funzione al pulsante che, dopo il primo autoclick, lo rimuove dalla pagina, così non può essere più cliccato, in questo modo:

    function togliPulsante()
    {	   	       
        document.getElementsByClassName("button confirm")[0].remove();		
    }
    
    document.getElementsByClassName("button confirm")[0].setAttribute("onclick","togliPulsante()");
    

    Puoi piazzarla direttamente dentro la tua funzione autoclick() che, immagino venga eseguita dall'estensione di Chrome:

    function autoClick()
    {
        labels = document.querySelectorAll('label');
        if (labels[1].innerText == "Modello di stampa")
        {
            document.getElementsByClassName("button confirm")[0].setAttribute("onclick","togliPulsante()");
            document.getElementsByClassName("button confirm")[0].click();
        }
    }
    
    function togliPulsante()
    {	   	       
        document.getElementsByClassName("button confirm")[0].remove();		
    }
    
  • Re: Autoclick su pulsante Conferma

    Grazie Fabio, la pagina non reagisce come puoi osservare dal video:

    https://www.loom.com/share/fb3b12e25a0640a092c774765aba5bce

    Se può esserti utile ho ripreso tutti i passaggi, partendo dalla pagina precedente, dove clicco manualmente su “Stampa etichette” (quarto pulsante a destra dall'alto), cfr. allegato “Stampa etichette”. Quindi al termine del video clicco manualmente su “Conferma Stampa” e sul pulsante “Report” (in alto a destra). 

  • Re: Autoclick su pulsante Conferma

    Riassumendo: tu clicchi su “Stampa etichette”, il browser va sulla pagina con la scelta della stampante e del formato, e con l'estensione del Chrome vorresti fare un autoclick, in maniera da confermare automaticamente la pagina e visualizzare “stampa inoltrata.html”.

    Allora, visto che facendo l'autoclick sul pulsante “Conferma” si ottiene il submit del form con conseguente POST ad una action sul server denominata:

    D_STA_ETICOLACQ_GES.do   (che credo sia in linguaggio java),

    basta che tu fai terminare la action java con un bel:

    return "redirect:" + redirectUrl;

    mettendo come stringa redirectUrl, l'indirizzo completo sul server della pagina “stampa inoltrata.html”.

    Così, quando viene fatto il submit, il form viene passato alla action che elabora i suoi dati, e poi restituisce il controllo ad un'altra View, quella appunto, della pagina "stampa inoltrata.html".

  • Re: Autoclick su pulsante Conferma

    Scusa Fabio, potesti esemplificare?

    L'URL è questo:

    https://polormb.sebina.it/sebina/catalogazione/D_STA_ETICOLACQ_GES.do?codMenu=15030010500000&codFnz=D_STA_ETICOLACQ_GES&from=D

  • Re: Autoclick su pulsante Conferma

    Questo che hai scritto è l'URL con cui, quando fai click sul pulsante Conferma, viene richiamata l'action "D_STA_ETICOLACQ_GES.do" sul server.

    Tu vai in questa action (che si occupa di processare i dati del form) e alla fine vedrai che deve finire con un'istruzione del tipo:

     return “Redirect: https://polormb.sebina.it/sebina/catalogazione/stampa inoltrata.html”

    o qualcosa di simile… (non so dove si trova il file “stampa inoltrata.html” sul tuo server).

    Dai un'occhiata qua:

    https://stackoverflow.com/questions/17955777/redirect-to-an-external-url-from-controller-action-in-spring-mvc

    così capisci come fa la action (la classe del controller sul server a cui è diretto il POST del tuo form) a passare il controllo ad un altro URL.

  • Re: Autoclick su pulsante Conferma

    Ma io non ho l'accesso al server, vedo le stesse pagine e lo stesso codice che vedi tu… 

  • Re: Autoclick su pulsante Conferma

    Ah ok, allora questa volta abbiamo risolto veramente:

    modifica così la tua funzione autoclick():

    function autoClick()
    {
         var nomePagina = window.location.href;
         labels = document.querySelectorAll('label');
         if (labels[1].innerText == "Modello di stampa" && nomePagina.endsWith("conferma stampa.html"))
         {
              document.getElementsByClassName("button confirm")[0].click();
         }
    }
  • Re: Autoclick su pulsante Conferma

    Mhm, come prima, non reagisce… La vedo dura… 

  • Re: Autoclick su pulsante Conferma

    Prova così:

    function autoClick()
    {
         var tuttiA = document.getElementsByTagName("a");     
         labels = document.querySelectorAll('label');
         if (labels[1].innerText == "Modello di stampa" && tuttiA[1].text == "4")
         {
              document.getElementsByClassName("button confirm")[0].click();
         }
    }
  • Re: Autoclick su pulsante Conferma

    Non risponde neanche così… 

Devi accedere o registrarti per scrivere nel forum
29 risposte