Klick mit pyppeteer simulieren
Um einen Button oder einen Link mit der pyppeteer-Bibliothek zu klicken, können Sie page.evaluate() verwenden.
Wenn Sie ein <button>-Element oder einen Link (<a>) wie
<button id="mybutton">können Sie
# Jetzt den Such-Button klicken
await page.evaluate(f"""() => {{
document.getElementById('mybutton').dispatchEvent(new MouseEvent('click', {{
bubbles: true,
cancelable: true,
view: window
}}));
}}""")verwenden, um ein MouseEvent zu erzeugen, das einen Klick simuliert. Beachten Sie, dass page.evaluate() jeden Javascript-Code ausführt, den Sie übergeben, sodass Sie Ihre Javascript-Kenntnisse einsetzen können, um den gewünschten Effekt zu erzeugen
Siehe auch https://gomakethings.com/how-to-simulate-a-click-event-with-javascript/ für weitere Details zur Simulation von Mausklicks in reinem Javascript ohne jQuery.
Beachten Sie, dass page.evaluate() einfach jeden Javascript-Code ausführt, den Sie ihm geben, sodass Sie Ihre Javascript-Kenntnisse einsetzen können, um die Seite zu manipulieren.
Vollständiges Beispiel
Dieses Beispiel öffnet https://techoverflow.net, gibt einen Suchbegriff in das Suchfeld ein, klickt auf den Such-Button und erstellt dann einen Screenshot
import asyncio
from pyppeteer import launch
async def main():
browser = await launch()
page = await browser.newPage()
await page.goto('https://techoverflow.net')
# Inhalt in das Suchfeld einfügen
content = "pypetteer"
await page.evaluate(f"""() => {{
document.getElementById('s').value = '{content}';
}}""")
# Jetzt den Such-Button klicken
await page.evaluate(f"""() => {{
document.getElementById('searchsubmit').dispatchEvent(new MouseEvent('click', {{
bubbles: true,
cancelable: true,
view: window
}}));
}}""")
# Warten, bis die Suchergebnisseite geladen wurde
await page.waitForSelector(".archive-title")
# Jetzt Screenshot erstellen und beenden
await page.screenshot({'path': 'screenshot.png'})
await browser.close()
asyncio.get_event_loop().run_until_complete(main())Das Ergebnis sieht so aus:
