zxf-nobug 2019-12-18 11:29 采纳率: 0%
浏览 1045

puppeteer对于重定向后的页面该如何处理

puppeteer在对于多次重定向后的页面进行事件操作时,比如点击登录botton会跳转到空白页,在goto的时候还是会因为没有获取到token而未登录

除了提前写入cookie和直接使用已有的用户date还有什么方法呢?请教一下前端大佬们

  • 写回答

1条回答 默认 最新

  • 三亚天涯龙之主信息科技工作室 三亚天涯龙之主信息科技工作室官方账号 2023-03-30 22:14
    关注

    在使用 Puppeteer 进行自动化测试时,经常会遇到多次重定向后的页面需要进行事件操作的情况。在这种情况下,可以尝试使用 waitForNavigation 方法来等待页面加载完成,再进行事件操作。具体的代码示例如下:

    
    await page.goto(url)
    await page.waitForNavigation()
    // 点击登录按钮
    await page.click('#login-button')
    await page.waitForNavigation()
    // 等待页面加载完成
    await page.waitForSelector('#some-element')
    // 进行其他事件操作
    
    

    在上面的示例代码中,我们使用了 waitForNavigation 方法来等待页面加载完成。这个方法会等待页面的跳转、刷新等操作完成后再返回,因此可以避免在页面未加载完成时进行事件操作导致的问题。在进行事件操作后,我们可以再次使用 waitForNavigation 方法来等待页面加载完成。

    如果在使用 waitForNavigation 方法后仍然无法解决问题,可以尝试使用 waitForSelector 方法来等待页面中需要操作的元素出现。这个方法会等待指定的选择器匹配的元素出现后再返回。在使用 waitForSelector 方法时,需要注意元素选择器的唯一性,以确保选择的是正确的元素。

    除了使用这些方法外,还可以尝试使用 waitUntil 选项来等待页面加载完成。例如,可以设置 waitUntil: 'networkidle0',表示等待网络连接空闲的时候页面加载完成。这个选项的具体使用可以参考 Puppeteer 的文档。

    最后,如果以上方法都无法解决问题,可以尝试使用 page.evaluate 方法来直接在页面中执行 JavaScript 代码。这个方法可以让我们在页面中执行任意的 JavaScript 代码,包括获取页面中的变量和执行事件操作等。在使用 page.evaluate 方法时,需要注意页面和 Node.js 之间的上下文切换,以及 JavaScript 代码的安全性问题。

    希望这些方法能够帮助你解决问题。

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog