Javascript 木偶演员等待url

Javascript 木偶演员等待url,javascript,puppeteer,Javascript,Puppeteer,我有无头关闭,我想等待,直到用户重定向到某个页面。我可以使用Puppeter API中的waitForRequest,但我不知道确切的url,它只需要通过一些情况 所以我使用WaitFor函数并检查那个里的情况,但当我重定向到正确的URL时,出于某种原因,我需要刷新页面以传递情况 我的代码是: try { await page.waitForFunction(() => { if(window && window.locatio

我有无头关闭,我想等待,直到用户重定向到某个页面。我可以使用Puppeter API中的
waitForRequest
,但我不知道确切的url,它只需要通过一些情况

所以我使用WaitFor函数并检查那个里的情况,但当我重定向到正确的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。为什么会这样?我不希望用户在输入正确的页面后被迫刷新页面

我有无头关闭,我想等待,直到用户重定向到某个页面

就用吧

结合
单击
确保使用:

waitForNavigation
还返回一个响应对象,然后您可以检查该对象

我可以从Puppeter API使用waitForRequest,但我不知道确切的url,它只需要通过一些情况

在本例中,Puppeter将请求作为参数注入,您可以在lambda函数中测试这一点。例如:

page.waitForRequest(request => {
  return  request.url().includes('margonem') && request.method() === 'GET'
})

有时我们需要等到我们到达一个特定的URL

最好的处理方法是

    let holdProgress = true;
        while (holdProgress) {
            await page.waitFor(300);
            if (page.url().includes('/env-selector')) {
                holdProgress = false;
            }
        }


但是waitForNavigation只能加载
load、domcontentloaded、networkidle0、networkidle2
我想等待URL,它将从我的函数中每次if传递。你读过我的问题吗?你写道:“我想等到用户重定向到某个页面。”在本例中,使用waitForNavigation。但为了澄清你的另一个问题,我更新了我的答案。希望这有帮助。是的,但在那之后我指定了它必须是什么URL。无论如何,我不知道您可以将函数传递给waitForRequest。我想这会解决我的问题。给我一点时间试试
    let holdProgress = true;
        while (holdProgress) {
            await page.waitFor(300);
            if (page.url().includes('/env-selector')) {
                holdProgress = false;
            }
        }