public StreamlinePropertyInfo Scrap(StreamlinePropertyInfo item, bool grabAdditionalInfo) { _driver.Navigate().GoToUrl(@"https://www.resortpro.net/new/admin/edit_home.html?home_id=" + item.StreamlineEditID + @"&activetab=0&need_update_parent=0"); _driver.JustWait(5); var nameElement = _driver.FindElement(By.Id("name")); var streamlineName = nameElement.GetAttribute("value"); var airBnbNameElement = _driver.FindElement(By.Id("airbnb_home_name")); var airBnbName = airBnbNameElement.GetAttribute("value"); item.StreamlinePropertyName = streamlineName; item.AirBnbExacName = airBnbName; item.SenStayID = streamlineName.ExtractSenStayID(); if (!grabAdditionalInfo) { Console.WriteLine("Processed # " + item.SenStayID + " " + item.AirBnbExacName); return(item); } item.HouseDetails = GrabHouseDetails(); item.CustomAmenities = GrabCustomAmenities(); item.HaVrboAmenities = GrabHaVrboAmenities(); item.TaxesAndFees = GrabTaxesAndFees(); item.OwnerInformation = GrabOwnerInformation(); GrabGalleryAsync(item.StreamlineEditID.ToString()).Wait(); Console.WriteLine("Processed # " + item.SenStayID + " " + item.AirBnbExacName); return(item); }
public bool Add(StreamlinePropertyInfo PropertyItem) { var SenStayID = PropertyItem.SenStayID.SafeTrim(); var AirBnbName = PropertyItem.AirBnbExacName.SafeTrim(); if (!string.IsNullOrEmpty(SenStayID)) { SenStayIDToAirBnbName[SenStayID] = PropertyItem; } if (!string.IsNullOrEmpty(AirBnbName)) { AirBnbNameToSenStayID[AirBnbName] = PropertyItem; } return(true); }
public static void Process(IWebDriver driver, bool grabAdditionalInfo) { var URL = @"https://www.resortpro.net/new/admin/index.html"; driver.GoTo(URL); var wait = driver.CreateWaitDriver(); //<div id="dock-container" var dockContainerElement = driver.FindElement(By.Id("dock-container")); //<a href="javascript:YAHOO.frontdesk.UpdateContentCached('menu_configuration.html', 'dedicated=1')" var configurationLinkElement = dockContainerElement.FindAByHrefStartsWith("javascript:YAHOO.frontdesk.UpdateContentCached('menu_configuration.html',"); configurationLinkElement.Click(); driver.JustWait(1); //<div id="menuExpandedContainer"> var menuExpandedContainerElement = driver.FindElement(By.Id("menuExpandedContainer")); //<a href="javascript:YAHOO.frontdesk.UpdateContent('general_homes.html', 'lodging_type_id=3&status_id=2');">Vacation Rentals (170)</a> var vacationRentalsElement = menuExpandedContainerElement.FindAByHrefStartsWith("javascript:YAHOO.frontdesk.UpdateContent('general_homes.html',"); vacationRentalsElement.Click(); driver.JustWait(5); //<select id="status_id" style="width:100px;" size="1" name="status_id"> // set type to AirBnb var statusIdElement = new SelectElement(driver.FindElement(By.Id("status_id"))); // 80 is AirBnb's magic number //<option value="0">Any Status</option> statusIdElement.SelectByValue("0"); driver.JustWait(1); //<form id="table_navigation_form" action="javascript:YAHOO.frontdesk.table_navigation_function();" method="get"> var navFormElement = driver.FindElement(By.Id("table_navigation_form")); //<input type="submit" value="GO" name="ss"> // Can be passed var goButtonElement = navFormElement.FindElement(By.CssSelector("[value=\"GO\"]")); goButtonElement.Click(); driver.JustWait(4); //<input type="button" onclick="javascript:table_pager_submit('table_navigation_form', 1, 1, '');" value="Show All" name="button_view_all"> var showAllInputElement = driver.FindElement(By.CssSelector("[name=\"button_view_all\"]")); //var showAllInputElement = navFormElement.FindTagByAttributeStartsWith("input", "onclick", "javascript:table_pager_submit('table_navigation_form',"); showAllInputElement.Click(); driver.JustWait(10); driver.FindElement(By.Id("frontdesk_content")); var basetableElement = driver.FindElement(By.CssSelector(".basetable.fixedHeader")); var trs = basetableElement.FindElements(By.TagName("tr")); var i = 0; var items = new Collection <StreamlinePropertyInfo>(); foreach (var tr in trs) { //if (i++ == 0) continue; var propertyItem = new StreamlinePropertyInfo(); var editLinkElement = tr.FindTagByAttributeStartsWith("a", "onclick", "javascript:HomeEdit("); if (editLinkElement == null) { //Console.WriteLine("ERROR"); continue; } i++; var hrefAttr = editLinkElement.GetAttribute("onclick"); var streamlineEditId = hrefAttr.ExtractNumber(); propertyItem.StreamlineEditID = streamlineEditId; items.Add(propertyItem); Console.WriteLine("Property #" + i); } var updated = new StreamlinePropertyCollection(); i = 0; foreach (var item in items) { if (item.StreamlineEditID <= 0) { continue; } i++; var numTrys = 0; loopMark: try { var propertyScraper = new PropertyScraper(driver); propertyScraper.Scrap(item, grabAdditionalInfo); updated.Add(item); } catch { if (numTrys++ < 3) { Console.WriteLine("Retry #" + numTrys + " " + item.StreamlineEditID + " " + i); goto loopMark; } } } updated.Save(); Console.Write(Config.I.PropertyCollectionJsonPath + " saved at " + updated.DateCreated); var Json = updated.ToJson(); Console.Write(Json); }