Exemplo n.º 1
0
        public static bool CheckMonth(IWebDriver driver, AirbnbUnitDailyPrice dailyPrice)
        {
            var div    = driver.FindElement(By.CssSelector("div.calendar-month__dropdown.js-ignore-settings-hide"));
            var select = new SelectElement(div.FindElement(By.TagName("select")));

            return(select.AllSelectedOptions[0].GetAttribute("value") == dailyPrice.MonthValue());
        }
Exemplo n.º 2
0
        public static void NavigateToMonth(IWebDriver driver, AirbnbUnitDailyPrice dailyPrice)
        {
            var num = 0;

            while (num++ < 2)
            {
                try
                {
                    var div = driver.FindElement(By.CssSelector("div.calendar-month__dropdown.js-ignore-settings-hide"));
                    div.Click();
                    var el             = div.FindElement(By.TagName("select"));
                    var formattedValue = CultureInfo.GetCultureInfo("en-US").DateTimeFormat.GetMonthName(dailyPrice.Month) + " " + dailyPrice.Year;
                    el.Click();
                    el.SendKeys(formattedValue);
                    driver.JustWait(4);
                }
                catch
                {
                    N.Note(num + "");
                }
            }
        }
Exemplo n.º 3
0
        public static void SetDayPrice(IWebDriver driver, AirbnbUnitDailyPrice dailyPrice)
        {
            if (dailyPrice.DU() < DateTime.UtcNow.AddDays(-1))
            {
                return;
            }

            if (!CheckMonth(driver, dailyPrice))
            {
                NavigateToMonth(driver, dailyPrice);
            }

            //tile-selection-container
            var Valid        = false;
            var CurrentMonth = false;

            //@TODO: Localization support
            var MonthMark = dailyPrice.DU().ToString("MMM").ToLower();

            //var dayNumbers = Driver.FindElements(By.CssSelector("span.day-number"));
            var dateDivs = driver.FindElements(By.CssSelector("div.date"));

            foreach (var dateDiv in dateDivs)
            {
                //var spans = dayNumber.FindElements(By.TagName("span")); foreach (var span in spans) {
                if (!CurrentMonth)
                {
                    try
                    {
                        var monthSpan = dateDiv.FindElement(By.CssSelector("span.month"));
                        if (monthSpan == null)
                        {
                            continue;
                        }
                        var spansInMonth = monthSpan.FindElements(By.TagName("span"));
                        if (spansInMonth == null)
                        {
                            continue;
                        }
                        foreach (var spanInMonth in spansInMonth)
                        {
                            var textInMonth = (spanInMonth.Text + "").Trim().ToLower();
                            if (textInMonth == MonthMark)
                            {
                                CurrentMonth = true;
                                break;
                            }
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }

                if (CurrentMonth)
                {
                    try
                    {
                        var daySpan = dateDiv.FindElement(By.CssSelector("span.day-number"));
                        if (daySpan == null)
                        {
                            continue;
                        }
                        var spansInDay = daySpan.FindElements(By.TagName("span"));
                        if (spansInDay == null)
                        {
                            continue;
                        }
                        foreach (var spanInDay in spansInDay)
                        {
                            var textInDay = (spanInDay.Text + "").Trim().ToLower();
                            if (textInDay.ExtractNumber() == dailyPrice.Day && CurrentMonth)
                            {
                                Valid = true;
                                spanInDay.Click();
                                driver.JustWait(1);
                                break;
                            }
                        }
                    }
                    catch
                    {
                        continue;
                    }
                }

                if (Valid)
                {
                    break;
                }
            }

            if (!Valid)
            {
                return;
            }

            try
            {
                var input = driver.FindElementByCssSelector("input.input-giant.sidebar-price.embedded-currency__input");
                if (input == null)
                {
                    return;
                }
                input.Clear();
                input.SendKeys(dailyPrice.Price + "");

                driver.FindElementByCssSelector("button.btn.btn-host[type=\"submit\"]").Click();
                driver.JustWait(1);
                N.Note(dailyPrice.Log());
            }
            catch
            {
                // ignored
            }
        }