Ejemplo n.º 1
0
        /// <summary>
        /// Метод парсинга H2H матчей.
        /// Считывает тотал и результат матча.
        /// </summary>
        /// <param name="elements">Блоки H2H матчей на FlashScore.</param>
        /// <param name="driver">Веб-Драйвер.</param>
        /// <returns>Список матчей H2H.</returns>
        public static List <MatchH2H> GetH2HInfo(ReadOnlyCollection <IWebElement> elements, IWebDriver driver, string mainWindow)
        {
            List <MatchH2H> matchesH2h = new List <MatchH2H>();

            foreach (var element in elements)
            {
                MatchH2H matchH2H = new MatchH2H()
                {
                    TotalScore = 0, ResultOfMatch = Enums.H2HResult.None
                };
                WebDriverWait wait = new WebDriverWait(driver, TimeSpan.FromSeconds(30))
                {
                    PollingInterval = TimeSpan.FromMilliseconds(200)
                };
                element.Click();
                var h2hWindow = driver.WindowHandles.Where(m => !m.Equals(mainWindow)).First();
                driver.SwitchTo().Window(h2hWindow);
                try
                {
                    wait.Until(SeleniumExtras.WaitHelpers.ExpectedConditions.ElementExists(By.CssSelector("div#detail > div.summary___Cbl3b9P")));
                }
                catch (TimeoutException)
                {
                    foreach (var handle in driver.WindowHandles.Where(m => !m.Equals(mainWindow)))
                    {
                        driver.SwitchTo().Window(handle);
                        driver.Close();
                    }
                    driver.SwitchTo().Window(mainWindow);
                    return(matchesH2h);
                }
                var scoreBlocks = driver.FindElements(By.CssSelector("div#detail div.part___1Pd43ek")).Where(m => !m.GetAttribute("class").Contains("part--current"));
                foreach (var scoreBlock in scoreBlocks)
                {
                    if (!string.IsNullOrEmpty(scoreBlock.Text) &&
                        scoreBlock.Text.IsNumer())
                    {
                        matchH2H.TotalScore += Int32.Parse(scoreBlock.Text);
                    }
                }
                if (matchH2H.TotalScore != 0)
                {
                    matchH2H.ResultOfMatch = Enums.H2HResult.Fineshed;
                }
                matchesH2h.Add(matchH2H);
                driver.Close();
                driver.SwitchTo().Window(mainWindow);
            }
            foreach (var handle in driver.WindowHandles.Where(m => !m.Equals(mainWindow)))
            {
                driver.SwitchTo().Window(handle);
                driver.Close();
            }
            driver.SwitchTo().Window(mainWindow);
            return(matchesH2h);
        }
Ejemplo n.º 2
0
 public static string ToMessage(this Match m, bool UseLink, int count, double total)
 {
     if (UseLink)
     {
         if (MatchH2H.IsBigger(count, total, m.H2HMatches))
         {
             return($"Лига {m.League}. Матч {m.FirstPlayer} - {m.SecondPlayer}. Тотал больше {total}. Ссылка - {m.Link}");
         }
         return($"Лига {m.League}. Матч {m.FirstPlayer} - {m.SecondPlayer}. Тотал меньше {total}. Ссылка - {m.Link}");
     }
     else if (MatchH2H.IsBigger(count, total, m.H2HMatches))
     {
         return($"Лига {m.League}. Матч {m.FirstPlayer} - {m.SecondPlayer}. Тотал больше {total}.");
     }
     return($"Лига {m.League}. Матч {m.FirstPlayer} - {m.SecondPlayer}. Тотал меньше {total}.");
 }