TL; DR Quiero automatizar hacer clic en un botón en un dapp, luego confirmar la transacción en Metamask, luego esperar xx tiempo y repetir
Hasta ahora, he comenzado a trabajar en la creación de un guión con dappeteer y titiritero que compartiré a continuación.
Hasta ahora, con dappeteer no puedo hacer que cambie la red a BNB y cada vez que se ejecuta el script, tiene que configurar metamask con una cuenta, etc., ¡lo cual no creo que sea ideal!
¿Se puede hacer esto usando una extensión de Chrome? Preferiría esto, ya que entonces puede conectarse al complemento existente.
¡Cualquier ayuda o idea sería apreciada!
Código
import puppeteer from 'puppeteer'; import dappeteer from '@chainsafe/dappeteer'; function sleep(ms) { return new Promise(resolve => setTimeout(resolve, ms)); } async function main() { const browser = await dappeteer.launch(puppeteer, { metamaskVersion: 'v10.15.0', defaultViewport: null }); const metamask = await dappeteer.setupMetamask(browser,{seed: "xxx xxx xxx xxx xxx xxx xxx xxx"}); await metamask.addNetwork({networkName: "BSC",rpc: "https://bsc-dataseed.binance.org",chainId: "56",symbol: "BNB"}) await metamask.switchNetwork('main') await sleep(2000); const page = await browser.newPage() await page.goto('https://app.solarfarm.finance/?ref=xxxxxxxxxxxxxx'); await sleep(2000); await page.waitForXPath('//div[contains(@class,"chakra-button css-1voh9rj")]'); var originSelector = await page.$x('//div[contains(@class,"chakra-button css-1voh9rj")]'); await originSelector[0].click(); var input = await page.$x('//button[contains(text(),"Connect")]'); await input[0].click(); input = await page.waitForSelector("button#connect-METAMASK"); await input.click(); await metamask.approve({allAccounts: false}); page.bringToFront(); await sleep(2000); await metamask.confirmTransaction(); } main()