如何使用 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())

结果将看起来像这样:

模拟按钮点击后显示搜索结果的 Pyppeteer 截图


Check out similar posts by category: Pyppeteer, Python