public override IList <PaymentModel> ScrapeStatement(ScraperConfigurationModel configuration, Chrome chromeDriver, DateTime startFrom) { if (startFrom < DateTime.Now.AddYears(-2).AddDays(1)) { startFrom = DateTime.Now.AddYears(-2).AddDays(1); } var driver = chromeDriver.Driver; Login(configuration, chromeDriver); var existingLinks = driver.FindElements(By.PartialLinkText("История операций")).ToList(); var link1 = driver.FindElement(By.LinkText("Счета")); chromeDriver.MoveToElement(link1, 1, 1); WaitForPageLoad(driver); existingLinks = driver.FindElements(By.PartialLinkText("История операций")).Except(existingLinks).ToList(); existingLinks.Single().Click(); WaitForPageLoad(driver, 2); var selectBtn = driver.FindElement(By.Id("pt1:soc1::button")); var accountsChooser = driver.FindElement(By.Id("pt1:soc1::pop")); var accs = accountsChooser.FindElements(By.TagName("tr")); var result = new List <PaymentModel>(); foreach (var acc in accs) { var tds = acc.FindElements(By.TagName("td")); if (tds.Count < 4) { continue; } selectBtn.Click(); WaitForPageLoad(driver, 2); tds[0].Click(); WaitForPageLoad(driver, 2); var inputDate = driver.FindElement(By.Id("pt1:id1::fd")); inputDate.Click(); WaitForPageLoad(driver, 2); chromeDriver.SendKeys(Enumerable.Repeat(Keys.Delete, 20).Join("")); WaitForPageLoad(driver); chromeDriver.SendKeys(Enumerable.Repeat(Keys.Backspace, 20).Join("")); WaitForPageLoad(driver); chromeDriver.SendKeys(Enumerable.Repeat(Keys.Delete, 20).Join("")); WaitForPageLoad(driver); chromeDriver.SendKeys(Enumerable.Repeat(Keys.Backspace, 20).Join("")); WaitForPageLoad(driver); chromeDriver.SendKeys(startFrom.ToString("ddMMyyyy")); var submit = driver.FindElement(By.Id("pt1:showButton::button")); submit.Click(); WaitForPageLoad(driver, 2); var csv = driver.FindElement(By.Id("pt1:downloadCSVLink")); csv.Click(); int waited = 0; while (chromeDriver.GetDownloads().Count < 1 && waited < 300) { WaitForPageLoad(driver); waited++; } var files = chromeDriver.GetDownloads(); if (files.Count == 1) { var csvFile = files.First(); var csvContent = File.ReadAllLines(csvFile.FullName, Encoding.GetEncoding(1251)).Skip(1).Select(v => new AlphaStatement(v)).ToList(); var payments = csvContent.Select(v => Statement(v.Date, v.AccountName, v.What, v.Income - v.Outcome, v.Kind, v.Ccy, v.Reference)).ToList(); var holdPayments = payments.Where(v => v.StatementReference == "HOLD").ToList(); payments = payments.Except(holdPayments).ToList(); result.AddRange(payments); csvFile.Delete(); } chromeDriver.CleanupDownloads(); } return(result); }