猿问

Puppeteer 等待 url

我没有头,我想等到用户重定向到某个页面。我可以waitForRequest从 puppeteer API使用,但我不知道确切的 url,它只是必须通过少数情况。


所以我使用 waitForFunction 并检查那里的情况,但是当我重定向到正确的 URL 时,由于某种原因我需要刷新页面以传递情况。


我的代码是:


try {

    await page.waitForFunction(() => {

        if(window &&

           window.location &&

           window.location.hostname) {

            const host = window.location.hostname.split('.');

            if(!host.includes('www') &&

               !host.includes('new') &&

               host.includes('margonem') &&

               host.length === 3) {

                return true;

            }

        }

    }, {

        polling: 200,

        timeout: 0

    })

} catch (e) {

    console.log(e);

}

当我重定向到通过以上所有内容的 URL 时,我需要重新加载页面以实际看到它返回 true。为什么它像这样工作?我不希望用户在输入正确的页面后被迫刷新页面。



绝地无双
浏览 397回答 3
3回答

呼啦一阵风

我没有头,我想等到用户重定向到某个页面。只需使用waitForNavigation()。结合click确保您使用此模式:const [response] = await Promise.all([  page.waitForNavigation(waitOptions),  page.click(selector, clickOptions),]);waitForNavigation 还返回一个您可以检查的响应对象我可以使用 puppeteer API 中的 waitForRequest 但我不知道确切的 url 它只是必须通过少数情况。在这种情况下,puppeteer 将请求作为参数注入,您可以在 lambda 函数中对其进行测试。例如:page.waitForRequest(request => {  return  request.url().includes('margonem') && request.method() === 'GET'})

慕无忌1623718

有时我们需要等到我们到达特定的 URL。处理它的最好方法是    let holdProgress = true;        while (holdProgress) {            await page.waitFor(300);            if (page.url().includes('/env-selector')) {                holdProgress = false;            }        }

qq_笑_17

我发现的最简单的方法是使用 waitForFunction,它很容易修改以适应您的规格以及紧凑。  await page.waitForFunction("window.location.pathname == '/Welcome.aspx'")
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答