script zum automatischen klicken über die Browser Konsole

AltF4

New member
Hallo zusammen,

ich muss auf einer geschlossenen Homepage für eine Vielzahl von Datensätzen eine one by one Aktualisierung durchführen, indem ich jeweils immer den gleichen button klicke und damit zum nächsten Datensatz komme. Die eigentliche Aktion in der Browser Konsole habe ich so zusammen gestümpert

Javascript:
document.getElementsByClassName("next-order")[0].click();

Der Schnipsel löst die gewünschte Aktion aus und gibt keinen Fehler zurück. Es fehlt jetzt eine Funktion, die den code erneut ausführt, nachdem durch den click die Seite neu geladen hat, bzw. auch periodisch nach fünf Sekunden. Ich hoffe auf Euren input... Danke im voraus

VG
 
Habs hingekriegt

Javascript:
let counter = 0;
setInterval(count, 5000);
function count () {
  document.getElementsByClassName("next-order")[0].click();
}
 
tiptop. und danke für das update hier nach gerade mal 27 minuten ;)
 
Hi,

was mir in der Konsole fehlt, wäre noch ein Zähler. Er soll anzeigen, wie oft die Funktion hintereinander gelaufen ist. Kann mir jemand einen Ansatz zeigen, wie man das machen könnte?

VG
 
das geht ganz einfach:

Javascript:
let counter = 0;
setInterval(count, 5000);

function count() {
  document.getElementsByClassName("next-order")[0].click();
  counter++; // Erhöhen Sie den Zähler jedes Mal, wenn die Funktion ausgeführt wird
  console.log("Die Funktion count wurde " + counter + " Mal ausgeführt.");
}
 
Danke für die Erweiterung. Sie tut genau das, was ich geschrieben habe. Leider war das was ich geschrieben haben Quatsch. Mit dem .click() wird jedes mal die nächste Seite aufgerufen. Eigentlich möchte ich zählen, wie viele Seiten mit der Zeit geladen wurden. Ist die Seite noch nicht fertig geladen, wird der click ausgeführt, ohne das etwas passiert. Erst der folgende click ruft die nächste Seite auf.

Ich weiß das ich rund 15000 der Reihe nach aufrufen muss. Je nachdem wie ich die Zeit bei setInterval einstelle, kann ich theoretisch voraussagen, wie lange das ganze laufen wird. Da die Ladezeiten stark variieren, verliert man mit der Zeit den Überblick, wie weit das ganze vorangeschritten ist.

Kennt jemand ein Möglichkeit die geladenen Seiten zu zählen?
 
1. Zähler in der Funktion für den Seitenaufruf
Javascript:
let totalPages = 15000;
let currentPage = 0;

function loadNextPage() {
  if (currentPage < totalPages) {
    // Führen Sie den Seitenaufruf hier aus
    // ...

    currentPage++;
    console.log(`Geladene Seiten: ${currentPage}/${totalPages}`);
  } else {
    console.log('Alle Seiten wurden geladen.');
    clearInterval(interval); // Beenden Sie das Intervall, wenn alle Seiten geladen wurden
  }
}

const interval = setInterval(loadNextPage, 5000); // Ändern Sie den Intervallwert nach Bedarf
Mit dieser Methode wird der Zähler aktualisiert, jedes Mal wenn loadNextPage() aufgerufen wird, unabhängig davon, ob die Seite vollständig geladen ist.
2. Mit einer Warteschlange und Events
Eine andere Möglichkeit besteht darin, eine Warteschlange für die Seitenaufrufe zu verwenden und auf das Laden von Seiten mit Ereignissen zu warten. Hier ist ein allgemeines Konzept:
Javascript:
const totalPages = 15000;
let currentPage = 0;
const queue = []; // Eine Warteschlange für die Seitenaufrufe

function loadPage(pageNumber) {
  // Führen Sie den Seitenaufruf hier aus und warten Sie auf das Laden der Seite
  // ...

  // Wenn die Seite geladen wurde, erhöhen Sie currentPage
  currentPage++;
  console.log(`Geladene Seiten: ${currentPage}/${totalPages}`);

  // Prüfen Sie, ob weitere Seiten in der Warteschlange stehen
  if (queue.length > 0) {
    const nextPage = queue.shift();
    loadPage(nextPage);
  } else if (currentPage >= totalPages) {
    console.log('Alle Seiten wurden geladen.');
  }
}

// Starten Sie den Prozess mit der ersten Seite
queue.push(1);
loadPage(queue.shift());

Mit dieser Methode wird die nächste Seite aus der Warteschlange geladen, sobald die vorherige Seite vollständig geladen ist. Dadurch wird sichergestellt, dass Du den Überblick über die geladenen Seiten behältst, unabhängig von den Ladezeiten.
 
Hey mo,

Danke für die Beispiele. Variante zwei würde mir gefallen. An welche Stelle muss ich meinen click einbauen, damit es funktioniert? Nach meinem Veständnis benötige ich von meinem ursprünglichen Dreizeiler nur noch

Javascript:
function count () {  document.getElementsByClassName("next-order")[0].click();}

Damit passiert aber nichts mehr. Selbst wenn ich auf der Seite per Maus den nächsten click auslöse, zählt der counter nicht hoch. Füge ich meinen code komplett ein, dann funktioniert alles so wie vorher, clicks und Seitenaufrufe laufen auseinander und der counter mit den geladenen Seiten zählt nicht hoch.

VG
AltF4
 
bitte sehr:

Javascript:
const totalPages = 15000;
let currentPage = 0;
const queue = []; // Eine Warteschlange für die Seitenaufrufe

function loadPage(pageNumber) {
  // Führe den Seitenaufruf hier aus und warte auf das Laden der Seite
  // Zum Beispiel, hier könntest du den Klick auf "next-order" einbauen:
  document.getElementsByClassName("next-order")[0].click();

  // Wenn die Seite geladen wurde, erhöhe currentPage
  currentPage++;
  console.log(`Geladene Seiten: ${currentPage}/${totalPages}`);

  // Prüfe, ob weitere Seiten in der Warteschlange stehen
  if (currentPage < totalPages) {
    queue.push(currentPage + 1); // Füge die nächste Seite zur Warteschlange hinzu
  } else {
    console.log('Alle Seiten wurden geladen.');
  }

  // Prüfe, ob weitere Seiten in der Warteschlange stehen
  if (queue.length > 0) {
    const nextPage = queue.shift();
    loadPage(nextPage);
  }
}

// Starte den Prozess mit der ersten Seite
queue.push(1);
loadPage(queue.shift());
 
Danke nochmals für Deine Unterstützung. Mit Deinem letzten Vorschlag zählt der counter rasend schnell nach oben, so lange bis Chromium einfriert. Tatsächlich wird aber kein einziger click ausgeführt und keine der nächsten Seiten geladen.

VG
 
Upsi :)

es wird jetzt eine Funktion checkPageLoaded aufgerufen, die überprüft, ob die Seite geladen ist. Wenn die Seite geladen ist, wird der Counter erhöht und die nächste Seite aufgerufen. Andernfalls wird eine Wartezeit von 1 Sekunde eingeführt, bevor erneut überprüft wird, ob die Seite geladen ist.

Javascript:
const totalPages = 15000;
let currentPage = 0;

function loadNextPage() {
  if (currentPage < totalPages) {
    // Klick auf "next-order"
    const nextOrderButton = document.getElementsByClassName("next-order")[0];
    nextOrderButton.click();

    // Überprüfen, ob die Seite geladen wurde
    checkPageLoaded();
  } else {
    console.log('Alle Seiten wurden geladen.');
    clearInterval(interval);
  }
}

function checkPageLoaded() {
  // Überprüfen, ob die Seite geladen ist (z. B. anhand eines bestimmten Elements)
  const loadedElement = document.querySelector("..."); // Hier das Element, das auf das Laden der Seite hinweist, auswählen
  if (loadedElement) {
    // Seite ist geladen
    currentPage++;
    console.log(`Geladene Seiten: ${currentPage}/${totalPages}`);

    // Nächste Seite aufrufen
    loadNextPage();
  } else {
    // Seite ist noch nicht geladen, warte und überprüfe erneut
    setTimeout(checkPageLoaded, 1000); // Wartezeit von 1 Sekunde (kann angepasst werden)
  }
}

const interval = setInterval(loadNextPage, 5000);
 
Da ist noch eine Hexe drin. Wenn keinen selector angebe, dann läuft das script sauber und ich habe auch den Eindruck, dass der nächste click nicht prompt nach 5s ausgeführt wird. Es läuft aber auch der counter nicht.

Setze ich den selector auf meine class next-order:

Javascript:
const loadedElement = document.querySelector(".next-order");

dann rennt der counter wieder durch, ohne das eine neue Seite geladen wird.

VG
AltF4
 
versuch mal das hier:

Javascript:
const totalPages = 15000;
let currentPage = 0;

function loadNextPage() {
  if (currentPage < totalPages) {
    // Klick auf "next-order"
    const nextOrderButton = document.getElementsByClassName("next-order")[0];
    nextOrderButton.click();

    // Überprüfen, ob die Seite geladen wurde
    checkPageLoaded();
  } else {
    console.log('Alle Seiten wurden geladen.');
    clearInterval(interval);
  }
}

function checkPageLoaded() {
  // Überprüfen, ob die Seite geladen ist, indem du auf ein anderes Element auf der Seite achtest
  const targetElement = document.querySelector("..."); // Hier das Element auswählen, das auf das Laden der Seite hinweist

  if (targetElement) {
    // Seite ist geladen
    currentPage++;
    console.log(`Geladene Seiten: ${currentPage}/${totalPages}`);

    // Nächste Seite aufrufen
    loadNextPage();
  } else {
    // Seite ist noch nicht geladen, warte und überprüfe erneut
    setTimeout(checkPageLoaded, 1000); // Wartezeit von 1 Sekunde (kann angepasst werden)
  }
}

const interval = setInterval(loadNextPage, 5000);
 
als nächstes könntest du mal ein (nicht funktionierendes) beispiel posten, damit man das sich mal anschauen kann.
 
Javascript:
const totalPages = 15000;
let currentPage = 0;

function loadNextPage() {
  if (currentPage < totalPages) {
    // Klick auf "next-order"
    const nextOrderButton = document.getElementsByClassName("next-order")[0];
    nextOrderButton.click();

    // Überprüfen, ob die Seite geladen wurde
    checkPageLoaded();
  } else {
    console.log('Alle Seiten wurden geladen.');
    clearInterval(interval);
  }
}

function checkPageLoaded() {
  // Überprüfen, ob die Seite geladen ist, indem du auf ein anderes Element auf der Seite achtest
  const targetElement = document.querySelectorAll(".psa-order-content-value .client-info"); // Hier das Element auswählen, das auf das Laden der Seite hinweist

  if (targetElement) {
    // Seite ist geladen
    currentPage++;
    console.log(`Geladene Seiten: ${currentPage}/${totalPages}`);

    // Nächste Seite aufrufen
    loadNextPage();
  } else {
    // Seite ist noch nicht geladen, warte und überprüfe erneut
    setTimeout(checkPageLoaded, 1000); // Wartezeit von 1 Sekunde (kann angepasst werden)
  }
}

const interval = setInterval(loadNextPage, 5000);


Bildschirmfoto vom 2023-11-08 18-21-01.png
 
Habe ich gemacht, hat aber keinen Einfluss. Der Zähler für die geladenen Seiten rauscht in Millisekunden durch.
 
Zurück
Oben