Python中使用nodriver库如何通过XPath选择器进行元素定位?
Python中使用nodriver库如何通过XPath选择器进行元素定位?
嘿,我来帮你搞定这个问题!你碰到的问题其实核心两点:一是nodriver的select方法默认使用CSS选择器,二是你之前写的表达式既不是有效的CSS语法,还触发了库内部的一个小疏漏(那个NameError就是库处理无效选择器时的小bug)。
要在nodriver里用XPath定位元素特别简单,只要在你的XPath表达式前面加上xpath:前缀就可以了,这样库就会明确知道你要使用XPath解析器,而不是当作CSS选择器来处理。
比如你想定位包含"confirm"文本的按钮,正确的写法应该是:
await tab.select("xpath://button[contains(text(), 'confirm')]")
你之前写的button[contains(text(),'confirm')]是把XPath的语法硬套在了CSS上,这本身就不是有效的CSS选择器,自然会出问题;而你用input[name=something]这种写法没问题,是因为这是标准的CSS语法,库能正常解析。
再给你举个更清晰的例子,用XPath定位name属性为"something"的输入框,写法如下:
await tab.select("xpath://input[@name='something']")
按照这个方式来写XPath表达式,应该就能顺利定位到你想要的元素了!
备注:内容来源于stack exchange,提问作者jguerr
相关产品推荐
相关产品推荐

