如何使用 pyppeteer 模拟点击
为了使用 pyppeteer 库点击按钮或链接,你可以使用 page.evaluate()。
如果你有类似这样的 <button> 元素或链接(<a>)
button_example.html
<button id="mybutton">你可以使用
pyppeteer_click_eval.js
# 现在点击搜索按钮
await page.evaluate(f"""() => {{
document.getElementById('mybutton').dispatchEvent(new MouseEvent('click', {{
bubbles: true,
cancelable: true,
view: window
}}));
}}""")in order to generate a MouseEvent that simulates a click. Note that page.evaluate() will run any Javascript code you pass to it, so 你可以使用 your Javascript skills in order to create the desired effect
另请参见 https://gomakethings.com/how-to-simulate-a-click-event-with-javascript/ 获取有关如何在不依赖 jQuery 的情况下用纯 Javascript 模拟鼠标点击的更多详细信息。
注意 page.evaluate() 只运行你给它的任何 Javascript 代码,因此你可以利用你的 Javascript 技能来操作页面。
完整示例
此示例将打开 https://techoverflow.net,在搜索字段中输入搜索词,点击搜索按钮,然后创建截图
pyppeteer_click_full_example.py
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('https://techoverflow.net')
# 将内容填入搜索字段
content = "pypetteer"
await page.evaluate(f"""() => {{
document.getElementById('s').value = '{content}';
}}""")
# 现在点击搜索按钮
await page.evaluate(f"""() => {{
document.getElementById('searchsubmit').dispatchEvent(new MouseEvent('click', {{
bubbles: true,
cancelable: true,
view: window
}}));
}}""")
# 等待搜索结果页面加载完成
await page.waitForSelector(".archive-title")
# 现在截图并退出
await page.screenshot({'path': 'screenshot.png'})
await browser.close()
asyncio.get_event_loop().run_until_complete(main())结果将看起来像这样:

If this post helped you, please consider buying me a coffee or donating via PayPal to support research & publishing of new posts on TechOverflow