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

如何编写Selenium脚本自动填充支付结账页的iframe表单?

Selenium实现支付结账页面自动填充(含iframe内表单处理)

完整脚本示例

from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC

# 初始化浏览器
driver = webdriver.Chrome()
driver.get("https://www.goopi.co/")

# 先完成结账页面前置操作(如填写收货地址等,需根据实际流程补充)

# 等待iframe加载并切换上下文
# 方式1:通过ID定位(注意ID可能为动态生成,若每次加载变化则改用方式2)
iframe = WebDriverWait(driver, 10).until(
    EC.presence_of_element_located((By.ID, "number71dd4df3-f17d-4da6-b4a6-b920dad95e69"))
)
driver.switch_to.frame(iframe)

# 方式2:通过src属性部分匹配(更稳定,适配动态ID场景)
# iframe = WebDriverWait(driver, 10).until(
#     EC.presence_of_element_located((By.CSS_SELECTOR, 'iframe[src*="cashiers.myshopline.com/pci-sdk/iframe.html?name=number"]'))
# )
# driver.switch_to.frame(iframe)

# 定位信用卡号输入框并填充
cc_input = WebDriverWait(driver, 10).until(
    EC.element_to_be_clickable((By.ID, "input-file"))
)
cc_input.send_keys("4111111111111111")  # 测试用信用卡号,正式环境替换为真实有效信息

# 若需操作主文档元素,切换回主上下文
driver.switch_to.default_content()

# 后续操作(如点击支付按钮等,需根据页面元素补充)
# driver.find_element(By.CSS_SELECTOR, "button.pay-button").click()

# 关闭浏览器
# driver.quit()

核心步骤说明

  • 切换iframe上下文:
    支付表单嵌入独立iframe中,Selenium默认处于主文档上下文,必须先切换到iframe才能操作内部元素。根据提供的页面元素:

    <iframe src="https://cashiers.myshopline.com/pci-sdk/iframe.html?name=number" name="number71dd4df3-f17d-4da6-b4a6-b920dad95e69" id="number71dd4df3-f17d-4da6-b4a6-b920dad95e69" style="width: 100%; height: 100%; border: none;"></iframe>
    可通过ID直接定位,但ID可能是动态生成的,此时推荐用src属性部分匹配的CSS选择器,保证定位稳定性。

  • 定位并填充输入框:
    iframe内的信用卡号输入框元素为:

    <input id="input-file" autocomplete="cc-number" inputmode="numeric" style="padding: 20px 0px 0px 16px;font-family:Helvetica Neue,Arial,sans-serif">
    直接通过IDinput-file定位,配合WebDriverWait等待元素可点击,避免页面加载延迟导致的定位失败。

注意事项

  • 必须等待iframe完全加载后再切换,使用WebDriverWait配合presence_of_element_located或frame_to_be_available_and_switch_to_it条件。
  • 操作完iframe内元素后,若需操作主文档元素,需调用driver.switch_to.default_content()切回主上下文。
  • 测试用信用卡号仅用于功能验证,正式环境需使用真实有效的支付信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 01:15:39