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

Playwright Python:如何通过含'name'的占位符查找可填写表单?

匹配占位符包含'name'(不区分大小写)的可填写字段

要实现不区分大小写匹配占位符中包含'name'的输入字段,你可以用以下两种方法:

方法1:CSS属性选择器+正则(推荐)

利用Playwright支持的CSS正则属性选择器,加上不区分大小写标志i:

page.locator("[placeholder=/.*name.*/i]")
  • /.*name.*/:匹配任意包含'name'子串的内容,前后可带任意字符
  • i标志:开启不区分大小写匹配,能覆盖'First Name'、'SEARCH BY NAME'、'SuRiNaMe'这类变体

方法2:使用filter方法细化匹配

如果需要更灵活的判断逻辑,可以结合filter和正则校验:

// 筛选带placeholder属性且符合正则的input
page.locator("input[placeholder]").filter({
  hasAttribute: ["placeholder", /.*name.*/i]
})

// 自定义判断逻辑
page.locator("input").filter({
  predicate: (el) => {
    const placeholder = el.getAttribute("placeholder");
    return placeholder && /name/i.test(placeholder);
  }
})

你之前写法无效的原因:

  • page.locator("[placeholder=Name]")/page.locator("[placeholder='Name']"):精确匹配占位符为Name的元素,无法匹配包含其他字符的情况
  • page.locator("[placeholder='/^.*name.*?/']"):把正则表达式当成字符串字面量,只会匹配占位符正好是/^.*name.*?/的元素
  • page.locator("[placeholder=/^.*name.*?/]"):缺少i标志导致大小写敏感,且^和$要求整个占位符字符串完全匹配正则,而非包含'name'子串

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 15:15:36