Rumah > hujung hadapan web > tutorial js > Hari DaysOfCode

Hari DaysOfCode

Patricia Arquette
Lepaskan: 2024-10-04 06:19:02
asal
340 orang telah melayarinya

Day of DaysOfCode

Hei! Dah agak lama sejak entry lepas.
Baru-baru ini, saya telah menangani isu yang berkaitan dengan kehilangan rujukan elemen dalam satu gelung, dan akhirnya saya menemui penyelesaian yang ingin saya kongsikan dengan anda semua.

Apa yang saya ingin capai

  • Kumpulkan elemen butang pada halaman web tertentu.
  • Klik setiap butang untuk menavigasi ke halaman lain.
  • Selepas melakukan tindakan tertentu pada halaman baharu, kembali ke halaman pertama.
  • Ulang Langkah 2 dan 3 sehingga semua butang telah diklik.

Berikut ialah versi ringkas kod awal:

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

for (let i=0; i < someElements.length; i++) {
    await Promise.all([
        someElements[i].click(),
        page.waitForNavigation({ waitUntil: ["load", 'networkidle0'] }),
    /* There are particular processes and going back process */
    ]);
};
Salin selepas log masuk

Apakah kesilapan yang saya hadapi

Selepas lelaran gelung forst, skrip tidak dapat mengesan elemen butang. Saya terus mendapat ralat berikut:
ProtocolError: Protocol error (DOM.describeNode): Tidak dapat mencari konteks dengan id yang ditentukan di

Bagaimana saya menyelesaikannya

Saya menyelesaikan isu ini dengan mengisytiharkan semula senarai elemen butang dalam gelung.
Berikut ialah kod yang diubah suai:

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

for (let i=0; i < someElements.length; i++) {
    const someElements2 = await page.$$("xpath/ .//foo[@name='hoge']"); // added row
    await Promise.all([
        someElements2[i].click(),
        page.waitForNavigation({ waitUntil: ["load", 'networkidle0'] }),
    /* There are particular processes and going back process */
    ]);
};
Salin selepas log masuk

Saya menambah baris pengisytiharan semula kerana saya menganggap rujukan someElements asal telah hilang apabila menavigasi keluar dari halaman awal. Selepas perubahan ini, ralat telah diselesaikan. Walau bagaimanapun, saya tidak pasti sama ada pendekatan ini benar-benar mematuhi amalan pengekodan terbaik.

Jika anda menghadapi masalah dengan .click() dalam gelung semasa menavigasi antara halaman, pertimbangkan untuk mengisytiharkan semula elemen dalam gelung itu sendiri. Perubahan mudah ini mungkin menjimatkan banyak masa penyelesaian masalah anda!

Atas ialah kandungan terperinci Hari DaysOfCode. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:dev.to
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan