public static void BaixarRelatorios(Cliente xCliente, IEnumerable <Relatorio> xRelatorioLista) { bool ErrorDownload = false; foreach (var relatorio in xRelatorioLista.Where(relatorio => relatorio.AtivoRelatorio)) { var optionsChr = new ChromeOptions(); // Roda sem o browser //optionsChr.AddArgument("--headless"); optionsChr.AddArgument("--ignore-certificate-errors"); optionsChr.AddArgument("--ignore-ssl-errors"); // Inicializa o Chrome Driver using (var driver = new ChromeDriver(optionsChr)) { try { if (Ferramentas.LogarSistema(driver, xCliente)) { driver.Navigate().GoToUrl(Settings.Default.Relatorios + relatorio.NumeroRelatorio); driver.Navigate().Refresh(); Thread.Sleep(5000); // Fecha o Popup if (Ferramentas.ValidarElementoSeExiste(driver, "ilabspush-btn-close", "ClassName")) { driver.FindElementByClassName("ilabspush-btn-close").Click(); } Ferramentas.LimparPastaDownload(Settings.Default.Download, relatorio.NomeArquivoRelatorio); var wait = new WebDriverWait(driver, TimeSpan.FromSeconds(20)); // Setar a data var inputDateIn = wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementToBeClickable( driver.FindElementByName("inicio"))); inputDateIn.Clear(); var dataInicial = new DateTime(2018, 1, 1); //inputDateIn.SendKeys(dataInicial.ToString(" 01012018")); inputDateIn.SendKeys(xCliente.DataInicioRelatorio.Trim().Length == 7 ? dataInicial.ToString(" 0" + xCliente.DataInicioRelatorio) : dataInicial.ToString(" " + xCliente.DataInicioRelatorio)); Thread.Sleep(1000); var inputDateEnd = driver.FindElementByName("fim"); inputDateEnd.Clear(); inputDateEnd.SendKeys(""); inputDateEnd.SendKeys("31"); inputDateEnd.SendKeys("12"); inputDateEnd.SendKeys(DateTime.Now.ToString("yyyy")); Thread.Sleep(1000); var searchDateButton = driver.FindElementByXPath($"//*[@id='variaveis']/div[1]/span[{relatorio.NumeroSpan}]/a"); searchDateButton?.Click(); var waitTable = new WebDriverWait(driver, TimeSpan.FromSeconds(120)); waitTable.Until( SeleniumExtras.WaitHelpers.ExpectedConditions.VisibilityOfAllElementsLocatedBy( By.ClassName("sorting_1"))); Thread.Sleep(10000); // Baixar Relatorio var excelButton = driver.FindElementByClassName("buttons-html5"); excelButton.Click(); Thread.Sleep(5000); // Move o relatório baixado para a pasta do respectivo cliente Ferramentas.MoverRelatorioPasta(Settings.Default.CaminhoDestinoRelatorios, xCliente.NomeCliente, relatorio.NomeArquivoRelatorio, relatorio.NumeroRelatorio); // Atualiza data da ultima execução com sucesso do cliente e valida se quem chamou foi a rotina de erros if (!ErrorDownload) { ServiceCliente.AtualizarCliente(xCliente.NomeCliente, false, true, false); } } else { throw new ArgumentException("Erro ao logar usuário."); } } catch (Exception ex) { ServiceCliente.AtualizarCliente(xCliente.NomeCliente, true, true, false); Ferramentas.GravarLog("BaixarRelatorios - " + relatorio.NumeroRelatorio + " / Cliente: " + xCliente.NomeCliente, ex); ErrorDownload = true; } finally { driver.Close(); driver.Quit(); } } } }