Skip to content

Instantly share code, notes, and snippets.

@jagedn
Created May 8, 2024 10:14
Show Gist options
  • Save jagedn/f3dd53a4256d80e4d0b86b658d1f1bef to your computer and use it in GitHub Desktop.
Save jagedn/f3dd53a4256d80e4d0b86b658d1f1bef to your computer and use it in GitHub Desktop.
un node para descargarse el borrador de la renta
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();
}
})();
@jagedn
Copy link
Author

jagedn commented May 8, 2024

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

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment