Playwright捕获SAP Web应用按钮报错:解析选择器遇意外令牌"48"
解决方案建议
错误原因
你的选择器#M0:48::btn[17]不符合CSS选择器规范,导致解析失败:
- ID中的冒号(
:)属于CSS特殊字符,未转义会触发解析错误 ::btn不是标准CSS伪元素,浏览器无法识别[17]不是合法的索引选择语法
具体修复方案
方案1:基于按钮文本定位(最直观)
如果按钮的固定文本是「Get Variant」,可以直接用文本匹配选择器:
Sch_6 = page.wait_for_selector('button:text("Get Variant")') Sch_6.click(timeout=60000)
注:如果按钮不是<button>标签,替换为实际标签(如<div>、<a>)即可
方案2:修正原选择器的语法错误
- 转义ID中的冒号:在Python字符串里需要用双反斜杠(
\\)转义,或使用原始字符串前缀r - 替换
::btn为实际的按钮标签(如button) - 用
:nth-of-type(17)替代[17]表示第17个匹配元素
示例代码:
# 使用原始字符串避免转义问题 Sch_6 = page.wait_for_selector(r'#M0\:48 button:nth-of-type(17)') Sch_6.click(timeout=60000)
方案3:通过浏览器开发者工具获取正确选择器
- 右键页面上的「Get Variant」按钮,选择「检查」打开开发者工具
- 在Elements面板中找到对应元素,右键选择「Copy」→「Copy CSS selector」或「Copy XPath」
- 将复制的选择器直接替换到代码中
内容的提问来源于stack exchange,提问作者adn60
相关产品推荐
相关产品推荐

