Jest.js 超时错误:在自动测试中单击按钮后等待事件时超时

gopyfrb3  于 2023-04-03  发布在  Jest
关注(0)|答案(2)|浏览(162)

在网站上注册包括三个阶段。第一步是提供姓名,电子邮件地址。当您提交第一步的表格时,您将被重定向到第二步(通过电子邮件确认)。URL在浏览器中发生变化,确认电子邮件发送到邮件。为了实现自动测试,我们决定,我们将始终注册相同的电子邮件地址。2在请求确认此电子邮件时,您将收到一个确认链接。3下面的示例代码。

await page.click(btnSignUp)
const [response] = await Promise.all([
   page.waitForResponse((response) =>response.url()===apiURL+'/register'), 
   {timeout: 30 * 1000}
])
const responseData = await response.json()

点击“注册”按钮后,我看到以下页面(确认电子邮件),但我无法获得对请求的响应。我在执行自动测试时在终端中看到响应。但我得到错误“TimeoutError:等待事件时超时”什么问题,请帮我解决。

xuo3flqw

xuo3flqw1#

我附上代码片段。你可以使用它并根据你的情况进行修改。它有助于处理超时错误相关的问题。

const puppeteer = require("puppeteer");
const { scrollPageToBottom } = require('puppeteer-autoscroll-down')

async function scrape () {

const browser = await puppeteer.launch({headless: false});
const page =  await browser.newPage();

await page.goto("https://twitter.com/elonmusk", {waitUntil: "networkidle2"});

let isLoadingAvailable = true // Your condition-to-stop

while (isLoadingAvailable) {
    try{
        await scrollPageToBottom(page, { size: 250 , delay: 500})
        await page.waitForResponse(
        response => response.url() === 'https://twitter.com/elonmusk' && response.status() === 200
        )

    } catch (ex) {
        continue;
        
    }
    isLoadingAvailable = false // Update your condition-to-stop value
}

console.log("Loading done")
await browser.close();
};
scrape();
2w3rbyxf

2w3rbyxf2#

{
    visible: true,
    waitUntil: "load",
    waitUntil: "networkidle0",
    waitUntil: "domcontentloaded",
    waitUntil: "networkidle2",
    timeout: 90 * 1000,
  }

相关问题