جافاسكريبت - Puppeteer: طريقة أبسط للتعامل مع الصفحات التي يتم إنشاؤها عند النقر على a[target="_blank"]؛ الانتظار للتحميل وتضمين مهلات

نظرة عامة

أبحث عن طريقة أبسط للتعامل مع النقر على الروابط التي تفتح صفحات جديدة (مثل علامات التثبيت target="_blank").

هنا تعني كلمة handle:

  • احصل على كائن الصفحة الجديد
  • انتظر تحميل التبويب الجديد (مع مهلة)

    اقرأ أكثر →

جافاسكريبت - كيفية تشغيل Puppeteer باستخدام ملف تعريف موجود مسبقًا عدة مرات

لذا أنا أحاول إطلاق Puppeteer باستخدام ملف تعريف Chrome موجود بالفعل وقد نجح الأمر، لكن ما أريد القيام به هو تشغيل نفس العملية عدة مرات مما يُؤدي إلى ظهور خطأ

(node:12820) تحذير رفض الوعد غير المعالج: خطأ: فشل في تشغيل عملية المتصفح! [0311/152606.490:خطأ:

اقرأ أكثر →

جافاسكريبت - Puppeteer - "طلب الإطار الرئيسي مبكرًا جدًا!"

لقد أنشأت دالة باستخدام Puppeteer تتحقق مما إذا كان المستخدم قد سجل الدخول. في الأساس، أولاً تتحقق مما إذا كان المتصفح والصفحة مفتوحين، ثم تبحث عن المحدد وبناءً على ما إذا تم العثور على العنصر، تعيد true/false.

export async function checkIfUserIsLoggedIn() { const logger = getLogger('checkIfUserIsLoggedIn()'); try { if (!page || !browser) { logger.info('page or browser is not open'); return false; } logger.info('page or browser is open'); awai

اقرأ أكثر →

جافاسكريبت - كيفية استخدام Jest/Puppeteer للانتظار حتى يتم إزالة عنصر من DOM

ملخص المشكلة: أنا أكتب عدة مجموعات اختبار (باستخدام Jest و Puppeteer) لأتمتة اختبارات صفحة البداية لتطبيقي AngularJS. أحد الاختبارات التي أود أتمتتها هو قيام المستخدم بالضغط على زر في الصفحة يحذف عنصرًا في DOM. للأسف، يُستخدم هذا العنصر ل

اقرأ أكثر →

جافاسكريبت - قائمة وكيل المستخدم لمتصفح Puppeteer

أود تحميل قائمة عشوائية من وكلاء المستخدم من المسار الافتراضي الخاص بي، على سبيل المثال: 'agents.json' بدلاً من إضافة وكيل مستخدم واحد فقط ومباشر.

agents.json

["Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/85.0.4183.83 Safari/537.36", "Mozilla/5.0 (X11;

اقرأ أكثر →

جافاسكريبت - تمرير الصف كمعامل إلى page.evaluate في Puppeteer

في Puppeteer، يقوم page.evaluate بإطلاق خطأ إذا مررت بفئة كوسيط.

يعمل مع الأشياء العادية على أي حال.

هل هناك أي حل بديل لجعله يعمل؟

const puppeteer = require("puppeteer"); (async () => { let browser = await puppeteer.launch({ headless: tru

اقرأ أكثر →

node.js - كيفية استخدام إعلانات TypeScript مع puppeteer exposeFunction و webpack

أنا أستخدم puppeteer و webpack معًا في مشروع. أقوم بتجميع ملفاتي في حزمة واحدة، ثم باستخدام طريقة addScriptTag على puppeteer، أضيف هذا الملف إلى المتصفح. بالإضافة إلى ذلك، أنا أستخدم وظيفة exposeFunction حتى أتمكن من إرسال/استقبال البيانات من المتصفح إلى nodejs

اقرأ أكثر →

جافا سكريبت - بوبتيير: كيفية اعتراض طلب blob؟

كان هناك إجابة حول كيفية حل تحميل blob، الرابط كما يلي. كيف يمكن اعتراض تنزيلات blob التي يتم إنشاؤها في جانب العميل من الموقع عبر Puppeteer؟

لكنني أريد اعتراض تلك الطلبات التي كان منشؤها سكريبت في المتصفح. يبدو أن هذا الطلب من نوع blob. الصورة كما يلي:

عند اتباع المثال أعلاه، لم يتم اعتراض طلب البلوبي، فكيف يمكنني اعترا

اقرأ أكثر →

جافاسكريبت - بيوتير: كيف يمكن اعتراض طلب ServiceWorker/WebWorker؟

هناك بعض الحلول القديمة لحل هذا السؤال، أحدها موجود على جيتهاب، والآخر موجود على ستاك أوفرفلو.

لـ puppeteer خاصية _client في الإصدارات القديمة. الحل في الإصدارات القديمة كما يلي:

page._client.send('Network.setBypassServiceWorker', {bypass: true})

اقرأ أكثر →

كيفية التخلص من خطأ TypeScript في تقييم Puppeteer؟

لدي سكربت بسيط باستخدام Puppeteer:

export async function inspectWebpage(source) { const b = await getBrowser() const p = await b.newPage() await p.goto(path) const script = fs.readFileSync( 'host/code/node/puppeteer/crawl.js', 'utf-8', ) await p.evaluate(script) let data = await p.evaluate(() => task.getWebpageData()) await b.close() return data }

أرى هذا في كل مرة أستخدمها، وأود التخلص منه.

Cannot find name 'task'.ts(23

اقرأ أكثر →