Skip to content

Instantly share code, notes, and snippets.

@jagedn
Created May 8, 2024 10:14
Show Gist options
  • Select an option

  • Save jagedn/f3dd53a4256d80e4d0b86b658d1f1bef to your computer and use it in GitHub Desktop.

Select an option

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
Copy Markdown
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