هذه الاخطاء الثلاثة هي اسهل الاغلاق
هذه الاخطاء الثلاثة هي اسهل الاغلاق
(بلايرايت) هو أداة عصرية للتشغيل الآلي للمتصفحين لكن الكثير من الناس يخطوون في العملية و اليوم سأقتل ثلاثة أخطاء شائعة وسأساعدك على تجنب الحفر
القاعدة 1: العمليات دون انتظار تحميل العناصر
هذا هو أكثر حفرة شيوعا. الكثير من الناس يكتبون الرموز التي تبدو على ما يرام، ولكن يخطئون:element not foundلا أعلم
سوء التصرف:
await page.click("#submit-btn");
المشكلة هي أنه قد لا يتم تحميل الصفحة ولا يوجد الزر
الممارسة الصحيحة:
await page.waitForSelector("#submit-btn");
await page.click("#submit-btn");
أو بطريقة أحدث:
await page.locator("#submit-btn").click();
موقع (بلارايت) ينتظر تلقائياً أن تتفاعل العناصر وهو ميزة كبيرة على (سيلينيوم)
الخطأ 2: متجاهل في انتظار التحميل الدينامي
Many websites use JavaScript dynamically to render content. السيناريو الخاص بك قد بدأت استخراج البيانات قبل تحميل المحتويات.
سوء التصرف:
await page.goto("https://example.com");
const text = await page.textContent(".dynamic-content");
console.log(text); // 可能是 null 或空字符串
الممارسة الصحيحة:
await page.goto("https://example.com");
await page.waitForLoadState("networkidle");
const text = await page.textContent(".dynamic-content");
console.log(text);
أو بالنسبة لعناصر محددة:
await page.locator(".dynamic-content").waitFor({ state: "visible" });
const text = await page.textContent(".dynamic-content");
الإصدار 3: لم يتم تجهيز سياق وصفحة دورة حياة المصفح بطريقة صحيحة
الكثير من الناس يخلقون أمثلة على المروج وينسوا أن يوقفوها ويسببوا تسرب الذاكرة أو اغلق المسبح في الوقت الخطأ مما تسبب في انهيار النص
سوء التصرف:
const browser = await chromium.launch();
const page = await browser.newPage();
await page.goto("https://example.com");
// 忘记关闭浏览器
الممارسة الصحيحة:
const browser = await chromium.launch();
try {
const page = await browser.newPage();
await page.goto("https://example.com");
// 你的操作
} finally {
await browser.close();
}
أو بطريقة أكثر اناقة:
const browser = await chromium.launch();
const context = await browser.newContext();
const page = await context.newPage();
try {
await page.goto("https://example.com");
// 你的操作
} finally {
await context.close();
await browser.close();
}
موجز
نواة بلاي رايت هيانتظروإدارة دورة الحياةلا أعلم تذكر هذه النقاط الثلاث:
- انتظر دائما حتى يتم تحميل العناصر
- يجب أن يكون المحتوى الديناميكي واضحاً
- تذكّرْ لإغلاق المصفّحِ والسياقِ
وبهذه الطريقة، يمكن تجنب 99 في المائة من الأخطاء المشتركة.