„Wenn ein Arbeiter seine Arbeit gut machen will, muss er zuerst seine Werkzeuge schärfen.“ – Konfuzius, „Die Gespräche des Konfuzius. Lu Linggong“
Titelseite > Programmierung > Tag von DaysOfCode

Tag von DaysOfCode

Veröffentlicht am 31.10.2024
Durchsuche:288

Day of DaysOfCode

Hey! Der letzte Eintrag ist schon eine Weile her.
Kürzlich habe ich mich mit einem Problem beschäftigt, das mit dem Verlust von Elementverweisen innerhalb einer Schleife zusammenhängt, und habe endlich eine Lösung gefunden, die ich gerne mit Ihnen allen teilen möchte.

Was ich erreichen wollte

  • Schaltflächenelemente auf einer bestimmten Webseite sammeln.
  • Klicken Sie auf die einzelnen Schaltflächen, um zu einer anderen Seite zu navigieren.
  • Nachdem Sie bestimmte Aktionen auf der neuen Seite ausgeführt haben, kehren Sie zur ersten Seite zurück.
  • Wiederholen Sie die Schritte 2 und 3, bis alle Schaltflächen angeklickt wurden.

Hier ist eine vereinfachte Version des ursprünglichen Codes:

const someElements = await page.$$("xpath/ .//foo[@name='hoge']");

for (let i=0; i 



Welcher Fehler ist mir aufgefallen?

Nach der forst-Schleifeniteration konnte das Skript die Schaltflächenelemente nicht finden. Ich habe immer wieder folgende Fehlermeldung erhalten:
ProtocolError: Protokollfehler (DOM.describeNode): Der Kontext mit der angegebenen ID unter

kann nicht gefunden werden.

Wie ich es gelöst habe

Ich habe dieses Problem gelöst, indem ich die Liste der Schaltflächenelemente innerhalb der Schleife neu deklariert habe.
Hier ist der geänderte Code:

const someElements1 = await page.$$("xpath/ .//foo[@name='hoge']");

for (let i=0; i 



Ich habe eine Neudeklarationszeile hinzugefügt, weil ich davon ausgegangen bin, dass die ursprüngliche someElements-Referenz verloren geht, wenn man von der Startseite weg navigiert. Nach dieser Änderung wurde der Fehler behoben. Ich bin mir jedoch nicht sicher, ob dieser Ansatz strikt den besten Codierungspraktiken entspricht.

Wenn Sie beim Navigieren zwischen Seiten in einer Schleife auf ein Problem mit .click() stoßen, sollten Sie erwägen, das Element innerhalb der Schleife selbst neu zu deklarieren. Diese einfache Änderung kann Ihnen viel Zeit bei der Fehlerbehebung ersparen!

Freigabeerklärung Dieser Artikel ist abgedruckt unter: https://dev.to/koichiarai/day-23-of-100daysofcode-2opg?1 Bei Verstößen wenden Sie sich bitte an [email protected], um ihn zu löschen
Neuestes Tutorial Mehr>

Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.

Copyright© 2022 湘ICP备2022001581号-3