Puppeteer中如何编写按钮的XPath?现有定位代码执行失败如何解决?
你代码的核心问题是XPath语法和class属性匹配规则写错了:
- XPath的
@class是直接匹配元素class属性的实际文本内容,不能带CSS选择器里的类名前缀. - 多类名之间用空格分隔,不是用
.连接
写法1:类名全匹配
如果按钮的class属性值完全为_ant-btn _ant-btn-primary,没有其他附加类,可以用这个写法:
var eleLoginButton = await page.waitForXPath("//input[@class='_ant-btn _ant-btn-primary']") await eleLoginButton.click()
写法2:类名模糊匹配(更推荐)
如果按钮有动态生成的其他类名,用contains匹配同时包含两个目标类的元素,兼容性更好:
var eleLoginButton = await page.waitForXPath("//input[contains(@class, '_ant-btn') and contains(@class, '_ant-btn-primary')]") await eleLoginButton.click()
额外注意事项
- Ant Design的按钮默认是
<button>标签,如果你要定位的元素不是input而是button,把XPath里的input替换成button即可 - 如果执行点击时报元素不可交互的错误,可以改成强制点击:
await eleLoginButton.click({force: true})
内容的提问来源于stack exchange,提问作者Abhishiktha
相关产品推荐
相关产品推荐

