Created
May 8, 2024 10:14
-
-
Save jagedn/f3dd53a4256d80e4d0b86b658d1f1bef to your computer and use it in GitHub Desktop.
un node para descargarse el borrador de la renta
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
const { Builder, By, Key, until} = require('selenium-webdriver'); | |
const firefox = require("selenium-webdriver/firefox"); | |
const fs = require('fs'); | |
(async function referencia() { | |
var args = process.argv.slice(2); | |
var nif = args[0]; | |
var fecha = args[1]; | |
var importe = args[2]; | |
let options = new firefox.Options() | |
.setPreference("intl.accept_languages", "es-ES"); | |
let driver = await new Builder().forBrowser("firefox").setFirefoxOptions(options).build(); | |
try { | |
await driver.get('https://www2.agenciatributaria.gob.es/wlpl/BUCV-JDIT/AutenticaDniNieContrasteh?ref=%2Fwlpl%2FDABJ-REN0%2FObtenerReferenciaServlet'); | |
await driver.findElement(By.id('NIF')).sendKeys(nif, Key.RETURN); | |
await driver.wait(until.elementIsVisible(driver.findElement(By.id('FECHA'))), 1000); | |
await driver.findElement(By.id('FECHA')).click(); | |
for(const c in fecha){ | |
const ch = fecha.charAt(c); | |
await driver.actions().sendKeys(ch).perform() | |
} | |
await driver.wait(until.elementIsVisible(driver.findElement(By.id('botonContinuar'))), 1000); | |
await driver.findElement(By.id('botonContinuar')).click(); | |
await driver.wait(until.elementIsVisible(driver.findElement(By.id('casilla'))), 1000); | |
await driver.findElement(By.id('casilla')).sendKeys(importe); | |
await driver.findElement(By.id('boton_Obtener')).click(); | |
await driver.wait(until.elementIsVisible(driver.findElement(By.className('AEAT_fila'))), 1000); | |
const ul = driver.findElement(By.className('AEAT_fila')); | |
const li = await ul.findElements(By.tagName('li')); | |
const last = await li[2].getText() | |
const referencia = last.split(" ").reverse()[0] | |
console.log("referencia "+referencia.split(" ").reverse()[0]) | |
await driver.get('https://www2.agenciatributaria.gob.es/wlpl/DABJ-REN0/ValidacionReferenciaServlet?ref=%2Fwlpl%2FDFPA-D182%2FSvVisDF23Net'); | |
await driver.findElement(By.id('nif')).sendKeys(nif); | |
await driver.findElement(By.id('referencia')).sendKeys(referencia); | |
await driver.findElement(By.id('boton_acceder')).click(); | |
await driver.sleep(1000); | |
const source = await driver.getPageSource(); | |
fs.writeFileSync(`${nif}.html`, source); | |
} finally { | |
await driver.quit(); | |
} | |
})(); |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Requiere nodejs instalado (yo tengo la version 21 pero supongo que irá con versiones anteriores) así como firefox (seguramente cambiarlo a chrome sea facil)
crear una carpeta y ejecutar en ella
npm -y init
npm i selenium-webdriver
Dado un NIF, la fecha de expiracion y el importe de la ultima renta ejecutar
node index.js 01234Y 18/05/207 1232,12
en mi maquina la fecha tiene que ser con el formato mes/dia/año no sé cómo cambiarlo