Rumah >hujung hadapan web >tutorial js >Hari 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.
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 */ ]); };
Selepas lelaran gelung forst, skrip tidak dapat mengesan elemen butang. Saya terus mendapat ralat berikut: Saya menyelesaikan isu ini dengan mengisytiharkan semula senarai elemen butang dalam gelung. 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!
ProtocolError: Protocol error (DOM.describeNode): Tidak dapat mencari konteks dengan id yang ditentukan di
Bagaimana saya menyelesaikannya
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 */
]);
};