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

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 代码的安全性问题。

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

    评论

报告相同问题?

悬赏问题

  • ¥30 STM32 INMP441无法读取数据
  • ¥100 求汇川机器人IRCB300控制器和示教器同版本升级固件文件升级包
  • ¥15 用visualstudio2022创建vue项目后无法启动
  • ¥15 x趋于0时tanx-sinx极限可以拆开算吗
  • ¥500 把面具戴到人脸上,请大家贡献智慧
  • ¥15 任意一个散点图自己下载其js脚本文件并做成独立的案例页面,不要作在线的,要离线状态。
  • ¥15 各位 帮我看看如何写代码,打出来的图形要和如下图呈现的一样,急
  • ¥30 c#打开word开启修订并实时显示批注
  • ¥15 如何解决ldsc的这条报错/index error
  • ¥15 VS2022+WDK驱动开发环境