如何用Pyppeteer点击含特定文本的链接?
解决Pyppeteer点击XPath定位元素的报错问题
错误原因
page.xpath()返回的是ElementHandle对象的列表,而page.click()方法要求传入的是选择器字符串(如CSS选择器、XPath表达式),不能直接传入ElementHandle实例,这就是你遇到TypeError: Object of type ElementHandle is not JSON serializable的原因。
两种正确的点击方式
方式一:直接用XPath表达式调用page.click()
不需要提前获取ElementHandle,直接把XPath作为参数传给page.click(),Pyppeteer会自动定位并点击第一个匹配的元素:await page.click("//a[contains(., 'Abmelden')]")方式二:通过ElementHandle实例调用click()
如果已经通过xpath()获取了元素列表,需要先取出具体的ElementHandle对象,再调用它自身的click()方法:buttons = await page.xpath("//a[contains(., 'Abmelden')]") # 先判断是否找到元素,避免索引越界 if buttons: await buttons[0].click()
内容的提问来源于stack exchange,提问作者weather
相关产品推荐
相关产品推荐

