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

Playwright Python获取Frame内页面源码问题求助

解决方案

你用page.content()获取的是整个页面的源码,而你需要的是Frame内部的内容,得调用Frame对象的content()方法才行。另外页面提示手机号无效,是因为点击继续按钮时,表单里的手机号字段没填写,触发了验证规则。

给你调整后的代码:

from playwright.sync_api import sync_playwright

with sync_playwright() as p:
    browser = p.firefox.launch(headless=False)
    page = browser.new_page()
    page.goto("https://www.icloud.com/")

    # 用更稳定的定位器替代冗长的CSS路径
    page.click('text="继续"')
    page.click('text="创建 Apple ID"')

    # 等待Frame加载完成,直接获取Frame对象
    page.wait_for_selector('#create-account-frame')
    frame = page.frame('#create-account-frame')

    # 优化输入框定位,用更简洁的选择器
    frame.fill('#firstNameInput input', 'firstName')
    frame.fill('last-name-input input', 'lastname')
    # 补充填写手机号字段,避免验证提示
    frame.fill('#phoneNumberInput input', '13800000000')  # 替换成有效测试手机号

    # 点击继续按钮
    frame.click('button.button-primary.nav-action')

    # 获取Frame内部的源码
    frame_content = frame.content()
    print(frame_content)

    page.wait_for_timeout(10000)  # 用Playwright自带的等待替代time.sleep
    browser.close()

几个关键调整点:

  • 用page.frame('#create-account-frame')获取实际的Frame对象,再调用frame.content()就能拿到Frame内的源码
  • 替换了冗长的CSS定位器,改用更简洁、稳定的选择器,避免页面结构变化导致定位失效
  • 补充了手机号字段的填写,解决“Enter a valid phone number”的验证提示
  • 用Playwright自带的wait_for_selector和wait_for_timeout替代time.sleep,更符合工具最佳实践

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.29 23:49:59