You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Playwright无头模式下PayPal按钮无法渲染的测试问题求解决

问题描述

我编写了一个Playwright测试,用于验证电商网站的结账流程,流程最后需点击PayPal按钮、登录PayPal并提交付款。在有头模式下,测试可正常与PayPal弹窗交互,但在无头模式下,PayPal组件完全不渲染,导致无按钮可点击,我已通过Playwright的page.screenshot()方法确认此问题。据了解,这是常见问题,因PayPal将无头模式访问视为恶意机器人。

我在Django测试用例中运行该测试,相关Playwright启动代码如下:

SHOW = bool(int(os.environ.get('SHOW', 0)))

class Tests(StaticLiveServerTestCase):

    @classmethod
    def setUpClass(cls):
        os.environ["DJANGO_ALLOW_ASYNC_UNSAFE"] = "true"
        super().setUpClass()

        cls.playwright = sync_playwright().start()
        cls.browser = cls.playwright.chromium.launch(headless=not SHOW)

我尝试在launch(args=[...])中传入--disable-web-security、--use-gl=desktop、--disable-features=IsolateOrigins和--disable-site-isolation-trials参数,但这些参数要么无效,甚至会破坏有头模式下的PayPal组件。请问是否有已知的解决方法?

解决方法

针对PayPal在无头模式下检测机器人的问题,以下是几个经过验证的可行方案:

  • 模拟真实浏览器指纹:
    PayPal会通过浏览器特征(如User-Agent、屏幕分辨率、语言设置等)识别无头浏览器。你可以在启动浏览器和创建上下文时配置更贴近真实用户的参数:

    cls.browser = cls.playwright.chromium.launch(
        headless=not SHOW,
        args=[
            "--window-size=1920,1080",
            "--lang=en-US,en"
        ]
    )
    
    # 创建上下文时补充配置
    context = cls.browser.new_context(
        user_agent="Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/118.0.0.0 Safari/537.36",
        viewport={"width": 1920, "height": 1080},
        locale="en-US"
    )
    
  • 使用新版无头模式:
    Chromium旧版无头模式与有头模式差异明显,容易被识别。Playwright 1.32+支持新版无头模式,其行为与有头模式几乎一致:

    cls.browser = cls.playwright.chromium.launch(
        headless="new",  # 替代原有的True/False
        args=["--window-size=1920,1080"]
    )
    
  • 模拟真实用户操作节奏:
    机器人操作通常过于机械迅速,你可以在关键步骤添加随机延迟,或模拟鼠标移动、滚动等行为:

    import random
    
    # 先移动鼠标到PayPal按钮,延迟后再点击
    page.locator("#paypal-button").hover()
    page.wait_for_timeout(random.randint(500, 1500))
    page.locator("#paypal-button").click()
    
  • 移除安全禁用类参数:
    你之前尝试的--disable-web-security等参数会导致浏览器行为异常,反而增加被检测的概率,建议直接移除这些参数。

内容的提问来源于stack exchange,提问作者Cerin

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.18 12:46:17