public static List <Extrato> Sync(Dictionary <string, DateTime> contas) { var extratos = new List <Extrato>(); IWebDriver driver = null; var cultureBR = new CultureInfo("pt-BR"); try { UI.StartChrome(ref driver, 3); Bradesco_PF.LogIn(driver); var cc_ultimos = Bradesco_PF.ReadExtrato(driver, contas, cultureBR, TipoConta.Conta_Corrente, TipoLink.Ultimos_Lancamentos); var cc_range = Bradesco_PF.ReadExtrato(driver, contas, cultureBR, TipoConta.Conta_Corrente, TipoLink.Por_Periodo); var poup_ultimos = Bradesco_PF.ReadExtrato(driver, contas, cultureBR, TipoConta.Poupanca, TipoLink.Ultimos_Lancamentos); var poup_range = Bradesco_PF.ReadExtrato(driver, contas, cultureBR, TipoConta.Poupanca, TipoLink.Por_Periodo); Bradesco_PF.LogOff(driver); if (cc_ultimos.Count > 0 && cc_range.Count > 0) { cc_ultimos[cc_ultimos.Count - 1].saldo = cc_range[cc_range.Count - 1].saldo; } if (poup_ultimos.Count > 0 && poup_range.Count > 0) { poup_ultimos[poup_ultimos.Count - 1].saldo = poup_range[poup_range.Count - 1].saldo; } extratos.AddRange(cc_ultimos); extratos.AddRange(cc_range); extratos.AddRange(poup_ultimos); extratos.AddRange(poup_range); } catch (Exception ex) { UI.SaveHtmlAndPrint(driver, "Bradesco", ex); throw ex; } finally { if (driver != null) { try { driver.Close(); } catch { } driver.Quit(); driver.Dispose(); driver = null; } } // Retorna os registros return(extratos); }
private static void LogIn(IWebDriver driver) { driver.Url = "https://banco.bradesco/html/classic/index.shtm"; UI.WaitPageLoad(driver); // ------------------------------------------------------------------------------------------------------------------------------ // Tela: Home // ------------------------------------------------------------------------------------------------------------------------------ UI.WaitForDisplayed(driver, By.Id("AGN")); UI.SetTextBoxValue(driver, By.Id("AGN"), "agencia"); UI.SetTextBoxValue(driver, By.Id("CTA"), "conta"); UI.SetTextBoxValue(driver, By.Id("DIGCTA"), "digito"); UI.Click(driver, By.ClassName("btn-ok")); UI.Wait(1); // Tela: Aparece às vezes, "Acesso não autorizado. Já existe um acesso em andamento para esta conta." if (UI.IsDisplayed(driver, By.Id("modalLogin"))) { UI.Click(driver, By.Id("cancelarAcessoModalForm:_id178")); UI.WaitPageLoad(driver); Bradesco_PF.LogIn(driver); } // ------------------------------------------------------------------------------------------------------------------------------ // Tela: Senha e Token // ------------------------------------------------------------------------------------------------------------------------------ // Neste ponto aguarda digitar o Token UI.WaitForClickable(driver, By.Id("ul_teclado_virtual"), 300); // 5 minutos para digitar o token var teclado = UI.WaitForDisplayed(driver, By.Id("ul_teclado_virtual")); UI.Click(driver, teclado.FindElement(By.LinkText("senha"))); UI.Click(driver, teclado.FindElement(By.LinkText("senha"))); UI.Click(driver, teclado.FindElement(By.LinkText("senha"))); UI.Click(driver, teclado.FindElement(By.LinkText("senha"))); UI.Wait(2); UI.Click(driver, By.XPath("//*[@id=\"loginbotoes:botaoAvancar\"]")); // Verifica se abriu a popup de usuário já logado //UI.WaitPageLoad(driver); //UI.Wait(1); //if (UI.IsDisplayed(driver, By.Id("modalLogin"))) //{ // UI.ClickWhenClickable(driver, By.Id("cancelarAcessoModalForm:_id178")); // UI.WaitPageLoad(driver); // LogIn(driver); // return; //} UI.WaitPageLoad(driver); UI.Wait(3); // Fechar a popup que aparecer //if (UI.IsDisplayed(driver, By.Id("modal_infra_estrutura"))) //{ // UI.WaitIFrameLoad(driver, "modal_infra_estrutura"); // if (UI.IsDisplayed(driver, By.XPath("//a[@title = 'Fechar']"))) // { // UI.ClickWhenClickable(driver, By.XPath("//a[@title = 'Fechar']")); // } //} //if (UI.IsDisplayed(driver, By.XPath("//*[@id=\"entretela\"]/div/div[3]/a"))) //{ // UI.Wait(1); // UI.ClickWhenClickable(driver, By.XPath("//*[@id=\"entretela\"]/div/div[3]/a")); //} }