Playwright/Puppeteer 自动化脚本无法在“/signup”页面正确执行“for..loop”中的“async...await”?

问题描述 投票:0回答:1
所以我正在尝试使用剧作家自动化脚本自动执行速率限制请求。

但问题是它不断注册

[email protected]

 电子邮件,因此不断给出 
Email already used
 错误。

我以为我正在将

async...await

for...loop
 一起使用,但显然不是。

import { chromium } from 'playwright' async function main() { const browser = await chromium.launch({ headless: false }) const page = await browser.newPage() for (let i = 0; i < 20; i++) { await page.goto('http://localhost:3000/signup') await page.waitForLoadState('domcontentloaded') await page.fill('input[name="email"]', `test${i}@example.com`) await page.click('button[type="submit"]') await page.waitForURL('http://localhost:3000/verify-email') // await page.waitForSelector('#verify-email-form', { // state: 'visible', // timeout: 0, // }) console.log(i) } await page.close() await browser.close() } main()
我也尝试了上面注释的代码,但这也不起作用。

我的服务器脚本给出了这个:

{ email: '[email protected]' } { user: [], unique: true } { email: '[email protected]' } { user: [ { id: '01HNPK1GRM5ZHWXZBV1K2R3A9B', email: '[email protected]', emailVerified: 0 } ], unique: false }
它会检查唯一的电子邮件,因此第一次会给出 

unique: true

,但下次它会给出 
unique: true

这不应该发生,因为我将

for...loop

async...await
 一起使用。

它应该看起来像:

{ email: '[email protected]' } { user: [], unique: true } { email: '[email protected]' } { user: [], unique: true }
我做错了什么?

它在 Puppeteer 中也不起作用:

import puppeteer from 'puppeteer' async function main() { const browser = await puppeteer.launch({ headless: false, }) const page = await browser.newPage() for (let i = 0; i < 20; i++) { await page.goto('http://localhost:3000/signup') await page.type('input[name="email"]', `test${i}@example.com`) await page.click('button[type="submit"]') await page.waitForNavigation() // await page.waitForSelector('#verify-email-form', { // state: 'visible', // timeout: 0, // }) console.log(i) } await page.close() await browser.close() }
Fwiw,我在 Next.js 14 中使用 React Server Actions -> 

https://github.com/deadcoder0904/next-14-lucia-v3-sqlite-drizzle-conform-zod-email-verification-otp-服务器操作/

javascript next.js async-await puppeteer playwright
1个回答
0
投票
您可以将您的承诺推送到数组并使用:

await Promise.all(promiseArr);
for 循环中的等待 Promise 有不同的行为。

请参考此贴

© www.soinside.com 2019 - 2024. All rights reserved.