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

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 求差集那个函数有问题,有无佬可以解决
  • ¥15 【提问】基于Invest的水源涵养
  • ¥20 微信网友居然可以通过vx号找到我绑的手机号
  • ¥15 寻一个支付宝扫码远程授权登录的软件助手app
  • ¥15 解riccati方程组
  • ¥15 display:none;样式在嵌套结构中的已设置了display样式的元素上不起作用?
  • ¥15 使用rabbitMQ 消息队列作为url源进行多线程爬取时,总有几个url没有处理的问题。
  • ¥15 Ubuntu在安装序列比对软件STAR时出现报错如何解决
  • ¥50 树莓派安卓APK系统签名
  • ¥65 汇编语言除法溢出问题