qq_60333107 2023-10-12 10:13 采纳率: 0%
浏览 9
已结题

expect_request在playwright的拦截问题

img


这个系统需求:进入页面默认请求了美国站的某个类目,然后我下边有几个判断,如果我切换到德国站,再点击,这份代码没有进行捕获点击之后的请求,我想要的是捕获点击之后的请求,目前使用打断点执行调试的话、结果是正常的,但是,如果使用用例直接执行的方式的话,捕获到的接口请求是错误的,不知道如何解决

  • 写回答

1条回答 默认 最新

  • 专家-赤兔[在线] 全栈领域优质创作者 2023-10-13 13:43
    关注

    引自强大而免费的微信小程序:皆我百晓生。


    根据描述,你想要在切换到德国站并点击后捕获到点击后的请求。你可以使用Playwright的expect_request方法来拦截请求并获取请求信息。

    首先,确保你已经正确安装了Playwright,并导入所需的模块和类。以下是一个基本的示例代码,演示了如何在切换到德国站并点击后拦截请求:

    import asyncio
    from playwright.async_api import async_playwright
    
    async def intercept_requests():
        async with async_playwright() as p:
            browser = await p.chromium.launch()
            context = await browser.new_context()
            page = await context.new_page()
    
            # 在默认请求中设置 route 匹配逻辑
            await page.route('**/*', handler=lambda request: request.continue_())
            await page.goto('https://example.com')  # 进入页面默认请求
    
            # 切换到德国站
            await page.goto('https://example.com/de')
    
            # 拦截并捕获点击后的请求
            requests = []
            def handle_request(route, request):
                requests.append(request)
                request.continue_()
    
            # 拦截所有请求
            await page.route('**/*', handler=handle_request)
    
            # 点击操作
            await page.click('your_selector') # 请替换为你的实际选择器
    
            # 等待拦截到请求
            await asyncio.sleep(1)  # 如果需要等待一段时间获取更多请求,请相应调整等待时间
    
            # 输出请求数据
            for request in requests:
                print(request.url)
    
            await browser.close()
    
    asyncio.run(intercept_requests())
    

    这个示例中,我们使用了Playwright的route方法来设置默认的请求匹配逻辑,然后通过handler方法来继续请求。在切换到德国站之后,我们再次使用route方法来拦截所有的请求,并使用handler方法来捕获请求和继续请求。我们可以将捕获到的请求保存在列表中,并在操作完成后进行遍历,输出请求的URL等信息。

    请注意,这只是一个基本示例,你需要根据你实际的页面和操作进行相应的修改。另外,你可能需要根据实际情况来等待响应的时间。

    希望这可以帮助到你!如果你有任何进一步的问题,请随时与我联系。

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 4月25日
  • 创建了问题 10月12日

悬赏问题

  • ¥20 yolov5中train过程中,第一次完整训练的验证过程中,图像处理尺寸和设置尺寸不一致(设置尺寸失效)的问题
  • ¥20 自建A网站如何调用B网站网页数据
  • ¥15 在edge和chrome浏览器,怎么在新标签页打开链接
  • ¥15 c#如何使用scottplot给已画好的自定义热度图,增加一个一定的colorbar
  • ¥15 信贷平台.用户信用评估和风险评估怎么做,希望来个做过的Java.有合作的机会
  • ¥15 IMageEN获得图形顶点坐标的问题
  • ¥50 软件PC客户端抓包,获取http请求和响应
  • ¥15 手机被安装黑客软件怎么办?
  • ¥15 Windows C++ PaddleOcr 中文模型的训练方法
  • ¥15 c# 用scottplot画 以时间为纵坐标,数值为横坐标画曲线图