Foros del Web » Programación para mayores de 30 ;) » Java »

formulario web aceptar descarga

Estas en el tema de formulario web aceptar descarga en el foro de Java en Foros del Web. Buenas gente! Tanto tiempo! Mi trabajo me ha tenido alejado del foro por un tiempo, y ya que no soy programador ni trabajo de eso, ...
  #1 (permalink)  
Antiguo 25/05/2016, 18:06
 
Fecha de Ingreso: febrero-2014
Mensajes: 16
Antigüedad: 10 años, 1 mes
Puntos: 0
formulario web aceptar descarga

Buenas gente! Tanto tiempo! Mi trabajo me ha tenido alejado del foro por un tiempo, y ya que no soy programador ni trabajo de eso, java se ha convertido en mi hobby (espero no ofender a nadie)

Pero este aqui que a veces trabajo y placer se juntan, por eso consulto.

Estoy haciendo un programita que me permita aliviar un poco mi trabajo o parte de el, en mi país ya es común que las empresas proveedoras entreguen las facturas con código para verlas online, la consulta se hace a través de la pagina de la empresa en cuestión, pero se redireccionan a un servicio publico estatal (creado con tal fin, que todos podemos consultarlo, personas y empresa) y luego devuelve una copia del documento en formato pdf y que se visualiza en el navegador, el cual se puede descargar.

Bueno cree un código que carga la pagina de la empresa (no importa cual todas tienen el mismo código base) llena el formulario, lo envía y espera por la pagina con el resultado, pide bajar el doc y aquí mi problema: aparece la caja de aceptar descarga de siempre cuando queremos descargar algo, y bueno no logro detectar esta caja ni accesar el botón de aceptar que hay en ella. Estoy usando selemiun, les dejo el condigo que estoy usando, simplificado en una sola clase para les sea mas rapido leerlo.

// genero el webdriver y le doy la dirección de pagina web
WebDriver driver = new FirefoxDriver();
String web = "http://www.disco.com.uy/customcode/consulta_fact.html";
driver.get(web);
String handle = driver.getWindowHandle();

// detecto los elementos del formulario
WebElement serie, numero, total, hash6, consultar, download;
serie = driver.findElement(By.name("Serie"));
numero = driver.findElement(By.name("Numero"));
total = driver.findElement(By.name("Total"));
hash6 = driver.findElement(By.name("Hash6"));
consultar = driver.findElement(By.name("Consultar"));

// relleno cada elemento
serie.sendKeys("W");
numero.sendKeys("0967493");
total.sendKeys("381.06");
hash6.sendKeys("BjHkek");

// lo envio
consultar.click();

// creo un array y lo igualo al set de las paginas abiertas
ArrayList<String> ventanas = new ArrayList();
Set handles = driver.getWindowHandles();
System.out.println(handles.size());
for(String handle1 : driver.getWindowHandles()){
System.out.println(handle1);
ventanas.add(handle1);
}

//me aseguro de estar el ventana que presenta el resultado
int i = ventanas.size();
driver.switchTo().window(ventanas.get(i-1));

// encuentro el botón de download y le doy click
download = driver.findElement(By.id("download"));
download.click();


Desde aquí no se que hacer para tomar control del dialogo de bajar que aparece y poder bajar el doc.

Alguien puede darme alguna idea, gracia
  #2 (permalink)  
Antiguo 26/05/2016, 01:44
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: formulario web aceptar descarga

Buenas,

No lo he probado pero creo que puedes conseguirlo configurando un poco el webdriver Firefox.


Código Java:
Ver original
  1. FirefoxProfile firefoxProfile = new FirefoxProfile();
  2.  
  3. firefoxProfile.setPreference("browser.download.folderList",2);
  4. firefoxProfile.setPreference("browser.download.manager.showWhenStarting",false);
  5. firefoxProfile.setPreference("browser.download.dir","RUTADONDEQUIERESDESCARGAR");
  6. firefoxProfile.setPreference("browser.helperApps.neverAsk.saveToDisk","application/pdf");
  7.  
  8. WebDriver driver = new FirefoxDriver(firefoxProfile);
  9. [....]

https://www.seleniumeasy.com/seleniu...with-webdriver

Un saludo
__________________
If to err is human, then programmers are the most human of us
  #3 (permalink)  
Antiguo 26/05/2016, 12:16
 
Fecha de Ingreso: febrero-2014
Mensajes: 16
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: formulario web aceptar descarga

Buenas,

Gracias por la idea Profesor_Falken, pero no me funciono, incluso segui el link que pusiste, y viendo el ejemplo completo creo que la diferencia esta en que en el ejemplo el archivo a bajar es un link, pero en mi caso el archivo se visualiza en la pagina, en otras palabras, el archivo es un pdf.js dentro de un canvas de la pagina, de todas formas tu información fue de mucha ayuda, otra vez gracias
  #4 (permalink)  
Antiguo 27/05/2016, 00:57
Avatar de Profesor_Falken  
Fecha de Ingreso: agosto-2014
Ubicación: Mountain View
Mensajes: 1.323
Antigüedad: 9 años, 8 meses
Puntos: 182
Respuesta: formulario web aceptar descarga

Buenas,

Pero en tu post hablabas de un "dialogo de bajar que aparece " no?

De cualquier forma, si el "canvas" al que te refieres es el plugin de adobe incrustado en el navegador, entonces Selenium no tiene ningun control al respecto.
La unica forma de hacerlo seria localizar la ruta donde se encuentra dicho PDF y recuperarlo por GET mediante el jdk-httpconnection o Apache httpcomponents, por ejemplo.

Si te refieres a esto: https://mozilla.github.io/pdf.js/web/viewer.html
No veo donde esta el bloqueo. Cuando se pulsa en descargar no se muestra dialogo alguno. Basta con pulsar el boton con selenium.

Por favor, explica exactamente el caso, porque en el primer post no habias hablado de usar pdf.js, que no es precisamente un standard.

Un saludo
__________________
If to err is human, then programmers are the most human of us

Última edición por Profesor_Falken; 27/05/2016 a las 01:05
  #5 (permalink)  
Antiguo 30/05/2016, 16:19
 
Fecha de Ingreso: febrero-2014
Mensajes: 16
Antigüedad: 10 años, 1 mes
Puntos: 0
Respuesta: formulario web aceptar descarga

Hola! Disculpa que no te haya contestado antes,

La ruta de la pagina es un .cgi que genera el pdf.js, (como el que vos pusiste), pero la diferencia radica en que al ser una pagina .cgi no me da ruta del archivo especifico, si no que solo me tira el archivo en la pantalla al presionar el botón "consultar".
Teniendo eso en cuenta he tratado tres cosas:
1) sigo intentando con firefox, pero si me muestra el dialogo de que hacer con el archivo, si descargarlo o abrirlo (no se porque a vos no te lo muestra)
2) cambie por Chorme, pero no logro acceder al botón descarga dentro del plugin, cosa que si puedo hacer con Firefox
3) intente con httpURlconnection, pero no logro identificar el botón de "consultar" y por ende no puedo seguir.

Aun sigo estudiando el caso, busco en las APIs y otras documentaciones pero no le doy al clavo

Saludos

Etiquetas: aceptar, clase, formulario, jar, programa, string
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 19:17.