diff --git a/src/tools/account-register/sites/windsurf.js b/src/tools/account-register/sites/windsurf.js index f809d90..7fe9e9a 100644 --- a/src/tools/account-register/sites/windsurf.js +++ b/src/tools/account-register/sites/windsurf.js @@ -640,10 +640,28 @@ class WindsurfRegister { if (selectButton) { logger.info(this.siteName, ' → 点击"Select plan"按钮...'); - await selectButton.click(); - // 等待页面跳转或加载 - await this.human.randomDelay(3000, 5000); + // 点击后会跳转到 Stripe checkout 页面,需要等待导航完成 + logger.info(this.siteName, ' → 等待跳转到支付页面...'); + await Promise.all([ + this.page.waitForNavigation({ + waitUntil: 'networkidle2', + timeout: 30000 + }).catch(e => { + logger.warn(this.siteName, ` → 导航等待异常: ${e.message}`); + }), + selectButton.click() + ]); + + // 额外等待页面稳定 + await this.human.randomDelay(2000, 3000); + + const currentUrl = this.page.url(); + logger.info(this.siteName, ` → 当前URL: ${currentUrl}`); + + if (currentUrl.includes('checkout.stripe.com')) { + logger.success(this.siteName, ' → ✓ 已跳转到 Stripe 支付页面'); + } this.currentStep = 5; logger.success(this.siteName, `步骤 5 完成`); @@ -722,27 +740,27 @@ class WindsurfRegister { await this.page.waitForSelector('#cardNumber', { visible: true, timeout: 10000 }); await this.page.click('#cardNumber'); await this.human.randomDelay(500, 1000); - await this.page.type('#cardNumber', card.number, { delay: 100 }); + await this.page.type('#cardNumber', card.number, { delay: 250 }); // 4. 填写有效期(月份/年份) logger.info(this.siteName, ' → 填写有效期...'); await this.page.click('#cardExpiry'); await this.human.randomDelay(300, 500); const expiry = `${card.month}${card.year}`; // 格式: MMYY - await this.page.type('#cardExpiry', expiry, { delay: 100 }); + await this.page.type('#cardExpiry', expiry, { delay: 250 }); // 5. 填写CVC logger.info(this.siteName, ' → 填写CVC...'); await this.page.click('#cardCvc'); await this.human.randomDelay(300, 500); - await this.page.type('#cardCvc', card.cvv, { delay: 100 }); + await this.page.type('#cardCvc', card.cvv, { delay: 250 }); // 6. 填写持卡人姓名 logger.info(this.siteName, ' → 填写持卡人姓名...'); await this.page.click('#billingName'); await this.human.randomDelay(300, 500); const fullName = `${this.accountData.firstName} ${this.accountData.lastName}`; - await this.page.type('#billingName', fullName, { delay: 100 }); + await this.page.type('#billingName', fullName, { delay: 200 }); // 7. 选择地址:中国澳门特别行政区 logger.info(this.siteName, ' → 选择地址:中国澳门特别行政区...');