public Selenium(Config config, AsinGroup asinGroup)
        {
            var options = new ChromeOptions {
                PageLoadStrategy = PageLoadStrategy.Default,
            };

            webDriver = new ChromeDriver(options);
            webDriver.Manage().Cookies.DeleteAllCookies();
            webDriver.Manage().Timeouts().ImplicitWait = TimeSpan.FromSeconds(5);

            this.config    = config;
            this.asinGroup = asinGroup;
        }
        bool CheckPrice(IWebElement element, AsinGroup asinGroup)
        {
            var priceText = priceRegex.Match(element.Text.Replace(",", "")).Groups["dollars"].Value;
            var price     = Convert.ToInt32(priceText);

            if (price <= asinGroup.MaxPrice && price >= asinGroup.MinPrice)
            {
                Green($"Price ${price}. Purchasing item!!!");

                webDriver.FindElement(By.Id("buy-now-button")).Click();
                return(true);
            }

            Red($"Price invalid: ${price}");
            return(false);
        }
        public bool CheckForItems(string asin, AsinGroup asinGroup)
        {
            Console.WriteLine($"Checking price of {asin}");

            webDriver.Url = $"https://{config.Domain}/dp/{asin}";

            // Find first element: out of stock, price, other offers only
            var element = webDriver.FindElements(
                By.XPath("//div[@id='outOfStock'] | //span[@id='price_inside_buybox'] | //span[@data-action='show-all-offers-display']")
                ).FirstOrDefault();

            if (element == null)
            {
                Console.WriteLine("UNEXPECTED STATE.");
                return(false);
            }

            var id = element.GetAttribute("id");

            if (id == "outOfStock")
            {
                Red("Out of stock.");
                return(false);
            }

            if (id == "price_inside_buybox")
            {
                return(CheckPrice(element, asinGroup));
            }

            if (element.GetAttribute("data-action") == "show-all-offers-display")
            {
                Red("Only other offers.");
                return(false);
            }

            return(false);
        }