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()); }
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 + ""); } } }
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 } }