public override IEnumerable <EntityObject> CustomCollectionLoad(string code, string sessionUID = "", string hashUID = "", IEnumerable <EntityObject> obj = null, IEnumerable <Guid> id = null) { var result = Enumerable.Empty <EntityObject>(); BCT.Execute(c => { //Пока не заморачивался - передаётся базовый объект и требуется привести к типу var entities = Enumerable.Empty <Access>(); if (obj.Any()) { entities = obj.Select(q => (Access)q).ToArray(); } switch (code) { case "All": result = AccessHelper.All(); break; case "AddAvito": result = new[] { AccessHelper.AddAvito(entities.FirstOrDefault()) }; break; case "ActivateAccess": AccessHelper.ActivateAccess(entities.FirstOrDefault()); break; case "GetAccessStatistics": AccessHelper.GetAccessStatistics(entities.FirstOrDefault()); break; case "Remove": AccessHelper.Remove(entities); break; case "Enable": AccessHelper.Enable(id); break; case "Disable": AccessHelper.Disable(id); break; default: break; } }); return(result); }
public override AccessCache Registration(FirefoxDriver driver, AccessCache access) { var result = access; DCT.Execute(c => { var tzid = -1; if (access.IsForwarding) { SendMessage($"Registration => Wait ForwardNumber"); tzid = OnlineSimHelper.GetForward(forwardNumber).tzid; } else { SendMessage($"Registration => Wait Number"); tzid = OnlineSimHelper.GetNum(ServiceType.avito).tzid; } SendMessage($"Registration => tzid: {tzid}"); var getState = OnlineSimHelper.GetState(tzid); if (getState == null) { SendMessage($"Registration => GetState is null. Abort operation"); return; } access.Phone = getState.number; access.PhoneTZID = getState.tzid; SendMessage($"Registration => Phone: {access.Phone}"); WaitExecute(driver); //Перехожу в регистрацию driver.Navigate().GoToUrl("https://www.avito.ru/registration"); WaitExecute(driver); //Заполняю все поля DoAction(driver, By.CssSelector($"input[name='name']"), e => { e.Clear(); e.SendKeys("Валера"); }); DoAction(driver, By.CssSelector($"input[name='email']"), e => { e.Clear(); e.SendKeys(access.Login); }); var phone = access.Phone.Replace("+7", ""); DoAction(driver, By.CssSelector($"input[name='phone']"), e => { e.Clear(); e.SendKeys(phone); }); for (int i = 0; i < 30; i++) { DoAction(driver, By.CssSelector($"input[name='password']"), e => { e.Clear(); e.SendKeys(access.Password); }); var capcha = ""; var capchaPath = ""; Find(driver, "img", "class", "form-captcha-image js-form-captcha-image", e => { capchaPath = GetScreenshotElement(driver, e, access.Login); }); capcha = FreegateHelper.ImageToText(capchaPath); DoAction(driver, By.CssSelector($"input[name='captcha']"), e => { e.Clear(); e.SendKeys(capcha); }); FindTagByTextContains(driver, "button", "Зарегистрироваться", x => JsClick(driver, x)); Thread.Sleep(2000); if (driver.PageSource.Contains("Регистрация. Шаг 2")) { break; } } if (!driver.PageSource.Contains("Регистрация. Шаг 2")) { SendMessage("Registration => Captcha is not resolved"); AccessHelper.Disable(access.Id); return; } Find(driver, "button", "class", "button button-azure js-phone-checker-request-code", x => JsClick(driver, x)); for (int i = 0; i < 30; i++) { Thread.Sleep(3000); var state = getState = OnlineSimHelper.GetState(tzid); SendMessage($"Registration => Wait SMS, state = {state.response}"); if (state.responseEnum == getStateState.TZ_NUM_ANSWER) { DoAction(driver, By.CssSelector($"input[id='phone-checker-code']"), e => { e.Clear(); e.SendKeys(state.msg); }); break; } } Find(driver, "button", "class", "button button-origin button-origin_large button-origin-green js-registration-form-submit", x => JsClick(driver, x)); //Получаю смску Thread.Sleep(2000); //Подтверждаю AccessHelper.Enable(access.Id); }); return(access); }