Puppeteer/Typescript: איך אפשר להמיר לאלמנט בפונקציית eval$ של הדף?

אני מנסה לקרוא את הערך של מאפיין ב-puppeteer:

const value = attribute && await page.$eval(selector, (node: Element, name: string) => { return node.getAttribute(name) }, attribute.name);

שגורם ל

שגיאה TS2339: המ

קרא עוד →

node.js - Puppeteer סוגים node_modules/puppeteer/lib/types' אין משתנה מיוצא בשם 'Cookie'

יש לי בעיה עם סוגי Puppeteer, אני מנסה לייבא את סוג Cookie, אבל זה לא עובד בגרסה חדשה מ-6.0.0.

import { Cookie } from 'puppeteer';

והשגיאה

/node_modules/puppeteer/lib/types"' has no exported member 'Cookie'.

קרא עוד →

בדיקת טיפוס של Typescript לא מזהה את המתודה של אלמנט ב-Puppeteer

יש את הקוד הבא

const [button] = await page.$x(`//div[@class='QS5gu sy4vM'][contains(., 'Accept all')]`) await button.click()

טייפסקריפט מציגה בעיה בעת ריחוף מעל button.click() הקשר 'this' מהסוג 'ElementHandle<Node>' אינו ניתן להקצאה ל-'thi

קרא עוד →

TypeScript - איך אני יכול להקליט אודיו בזמן שימוש ב-Puppeteer?

רקע

אני יוצר תוכנה שמקליטה את האודיו של סמינרים בשידור חי. למרות שהאוטומטתי את הכניסה לסמינר כמשתמש, לא מצאתי דרך להקליט את האודיו שלו.

מה לעשות

אני יודע שיש הרבה כלים לאוטומציה של משימות גלישה. מבינהם, בחרתי להשתמש ב-Puppeteer ויודע איך להקליט בזמן גלישה בעזרת Puppeteer.

נניח שניתן לך page של Puppeteer. אתה צריך להקליט את האודיו של העמוד שלו. הסקריפט שלי כתוב ב-TypeScript, לכן יהיה זה מוערך ביו

קרא עוד →

javascript - Puppeteer מחכה לדף ו-setTimeout לא עובד בפונקציות ענן של Firebase

אני מנסה לטעון דף שאני מארח על Firebase ולהפוך אותו ל-PDF בעזרת Puppeteer. זה עובד טוב עם דף HTML רגיל. עכשיו אני מביא נתונים מ-Firebase ומציג אותם בדף שלי, לכן אני צריך להמתין עד שהדף יטען לגמרי לפני שאני יכול ליצור את ה-PDF. זה עובד טוב כשאני

קרא עוד →

TypeScript - איך לבדוק אם דף ב-Puppeteer נמצא כרגע במצב ניווט?

אני כותב מעטפת מעל Puppeteer. יש לי פונקציית "לחיצה" כללית, ופונקציית "getHtml":

class Page { .... async click(selector: string) { await this.context.evaluate((querySelector, text) => { const elem = document.querySelector(quer

קרא עוד →

typescript - canvas.getContext("webgl") מחזיר null כאשר בודקים עם puppeteer ו-jest

אני מנסה לכתוב בדיקות snapshot עבור מנוע WebGL שכתבתי בעזרת jest, puppeteer ו-jest-image-snapshot. הדרך שבה אני בודק את זה היא שכתבתי אפליקציית React TestApp שמכילה את הקנבס כך:

export function TestApp(props: { width: number; height: number }): JSX.Element { return ( <div id="drawing" style={{ ...props }} > <DrawingCanvas canvasProps={props} renderBehavior={RenderBehavior.Wet} /> </div> ); }

אני צר

קרא עוד →

TypeScript - חיקוי Puppeteer לצורך בדיקה

עבדתי על קוד Puppeteer כדי לצלם תמונה של אתר אינטרנט, וכותב קוד בדיקות יחידה עם Jest. הקוד שלי נראה בערך כך: index.ts

import puppeteer from "puppeteer"; export async function takeScreenshot() { const browser = await puppeteer.launch({ headless: true }); try { const page = await browser.newPage(); const url = "https://someurl.com/somepage"; await page.goto(url); await page.waitForSelector("test"); const bu

קרא עוד →

javascript - איך לקחת צילום מסך ב-RGBA עם puppeteer?

אני עובד על יישום ווב להשוואת תמונות עם Puppeteer והנה מה שאני מנסה לעשות:

  1. פתח דף ב-Puppeteer, עבור לדף רינדור עם רכיב רשת model-viewer (API גרפי של גוגל).
  2. להציג משהו עם model-viewer
  3. לֶקַח תצלום מסך rgba אחרי שההפעלה הסתיימה (השתמש ב-page.screenshot())
  4. סגור את הדף.
  5. קח את צילום המסך כארגומנט של API להשוואת תמונות (הקלט צריך להיות מסוג Buffer של nodejs או קובץ PNG)

הכל עובד טוב חוץ מהשלב השלישי, כי על ידי שימוש בשיטת page.s

קרא עוד →

javascript - שליחת הודעה בדיסקורד דרך Puppeteer (בלי בוט, בלי אפליקציה)

אני כותב סקריפט Puppeteer שפותח את Discord Web, נכנס לחשבון (שלב ידני עבור קפצ'ה ואישור), הולך לערוץ ומזין הודעה בטופס ההודעה, ואני מתקשה לשלוח אותה.

זה שונה מכל שאלות ותשובות קיימות, כי זה לא דרך Webhook של דיסקורד או יישום.

הסיבוך נראה בכך שהאלמנט בו מוזנת ההודעה הוא div שניתן לעריכה של תוכן.

אפשרות נוספת היא שדימוי הלחיצה על מקש Enter עובד, אבל הוא לא שולח שום דבר כי הגדרת ה-innerText על ה-div לא גורמת לו להכיר בכך שזה ההודעה שיש לשלוח. שמתי לב שהטקסט של הממלא (placeholde

קרא עוד →