public static void Descargar(string rfc, string contrasena, string carpeta, DateTime fechaDesde, DateTime fechaHasta, TipoBusqueda busqueda) { using (IE browser = new IE()) { //limpiar sesion y login browser.ClearCookies(); Thread.Sleep(1000); //java login browser.GoTo("https://portalcfdi.facturaelectronica.sat.gob.mx"); browser.WaitForComplete(); //entrar por contraseña browser.GoTo("https://cfdiau.sat.gob.mx/nidp/app/login?id=SATUPCFDiCon&sid=0&option=credential&sid=0"); browser.TextField(Find.ByName("Ecom_User_ID")).AppendText(rfc); browser.TextField(Find.ByName("Ecom_Password")).AppendText(contrasena); browser.Button("submit").Click(); browser.WaitForComplete(); //ver si nos pudimos loggear if (browser.ContainsText("Login failed, please try again") || browser.ContainsText("La entrada no se ha completado")) { browser.Close(); throw new Exception("Los datos de acceso son incorrectos para: " + rfc); } //seleccionar emitidas o recibidas if (busqueda == TipoBusqueda.Emitidas) { browser.RadioButton("ctl00_MainContent_RdoTipoBusquedaEmisor").Click(); } else { browser.RadioButton("ctl00_MainContent_RdoTipoBusquedaReceptor").Click(); } browser.Button("ctl00_MainContent_BtnBusqueda").Click(); Log.Write("Tipo busqueda", Log.Information); //Creating the directory if it doesn't exists if (!System.IO.Directory.Exists(carpeta)) { System.IO.Directory.CreateDirectory(carpeta); } //facturas emitidas if (busqueda == TipoBusqueda.Emitidas) { browser.WaitUntilContainsText("Fecha Inicial de Emisión"); browser.RadioButton("ctl00_MainContent_RdoFechas").Click(); Thread.Sleep(1000); //fecha desde browser.TextField("ctl00_MainContent_CldFechaInicial2_Calendario_text").Value = fechaDesde.ToString("dd/MM/yyyy"); //hasta browser.TextField("ctl00_MainContent_CldFechaFinal2_Calendario_text").Value = fechaHasta.ToString("dd/MM/yyyy"); Thread.Sleep(1000); //buscar muchas veces por si marca error de lentitud la pagina del sat >( while (true) { browser.Button("ctl00_MainContent_BtnBusqueda").Click(); Thread.Sleep(3000); if (browser.ContainsText("lentitud")) { browser.Link("closeBtn").Click(); } else { break; } } DescargarFacturasListadas(browser, carpeta); } else { DateTime mesActual = fechaDesde; bool primeraVez = true; while (mesActual < fechaHasta) { browser.WaitUntilContainsText("Fecha de Emisión"); browser.RadioButton("ctl00_MainContent_RdoFechas").Click(); Thread.Sleep(1000); //seleccionar año adecuado browser.SelectList("DdlAnio").SelectByValue(mesActual.Year.ToString()); //seleccionar mes adecuado browser.SelectList("ctl00_MainContent_CldFecha_DdlMes").SelectByValue(mesActual.Month.ToString()); if (mesActual.Day < 10 && primeraVez) { //seleccionar dia adecuado //click en buscar por que si no no jala //buscar muchas veces por si marca error de lentitud la pagina del sat >( while (true) { browser.Button("ctl00_MainContent_BtnBusqueda").Click(); Thread.Sleep(3000); if (browser.ContainsText("lentitud")) { browser.Link("closeBtn").Click(); } else { break; } } Thread.Sleep(1000); primeraVez = false; } browser.SelectList("ctl00_MainContent_CldFecha_DdlDia").SelectByValue(mesActual.Day.ToString("00")); Thread.Sleep(1000); //buscar muchas veces por si marca error de lentitud la pagina del sat >( while (true) { browser.Button("ctl00_MainContent_BtnBusqueda").Click(); Thread.Sleep(3000); if (browser.ContainsText("lentitud")) { browser.Link("closeBtn").Click(); } else { break; } } DescargarFacturasListadas(browser, carpeta); //pasar al siguiente mes mesActual = mesActual.AddDays(1); } } browser.Link("ctl00_LnkBtnCierraSesion").Click(); Thread.Sleep(2000); browser.Close(); } }
void Open() { try { ie = new IE(); ie.ShowWindow(NativeMethods.WindowShowStyle.Hide); ie.ClearCache(); ie.ClearCookies(); } catch { } //ie.ShowWindow(NativeMethods.WindowShowStyle.Hide); }