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
相关产品推荐
相关产品推荐

