Пример #1
0
        bool Registration(MainWindow mainWindow, Models.Account account)
        {
            Random random = new Random();

            Thread.Sleep(10000);
            _driver.Navigate().GoToUrl(mainWindow.RegisterSetting.Url);


            var emailElement = _driver.FindElementWait(mainWindow.RegisterSetting.Email);

            _driver.FillTextToTextBox(emailElement, account.Email);

            Thread.Sleep(random.Next(1000, 2000));

            var confirmEmailElement = _driver.FindElementWait(mainWindow.RegisterSetting.ConfirmEmail);

            _driver.FillTextToTextBox(confirmEmailElement, account.Email);
            Thread.Sleep(random.Next(1000, 2000));

            var passwordElement = _driver.FindElementWait(mainWindow.RegisterSetting.Password);

            _driver.FillTextToTextBox(passwordElement, account.Password);
            Thread.Sleep(random.Next(1000, 2000));

            var displayNameElement = _driver.FindElementWait(mainWindow.RegisterSetting.DisplayName);

            _driver.FillTextToTextBox(displayNameElement, account.DisplayName);
            Thread.Sleep(random.Next(1000, 2000));

            var dayElement = _driver.FindElementWait(mainWindow.RegisterSetting.Day);

            _driver.FillTextToTextBox(dayElement, account.BirthDate.Day.ToString());
            Thread.Sleep(random.Next(1000, 2000));

            var dropdownMonthElement = _driver.FindElementWait(mainWindow.RegisterSetting.Month);

            _driver.ClickElement(dropdownMonthElement);
            Thread.Sleep(random.Next(1000, 2000));

            var selectMonthElement = new SelectElement(dropdownMonthElement);

            selectMonthElement.SelectByValue(account.BirthDate.Month > 10 ? account.BirthDate.Month.ToString() : "0" + account.BirthDate.Month.ToString());
            Thread.Sleep(random.Next(1000, 2000));

            var yearElement = _driver.FindElementWait(mainWindow.RegisterSetting.Year);

            _driver.FillTextToTextBox(yearElement, account.BirthDate.Year.ToString());
            Thread.Sleep(random.Next(1000, 2000));


            if (account.Gender == GenderEnum.Male)
            {
                var maleElement = _driver.FindElementWait(mainWindow.RegisterSetting.Male);
                _driver.ClickElement(maleElement);
            }
            else if (account.Gender == GenderEnum.Female)
            {
                var femaleElement = _driver.FindElementWait(mainWindow.RegisterSetting.Female);
                _driver.ClickElement(femaleElement);
            }
            else if (account.Gender == GenderEnum.Other)
            {
                var neutralElement = _driver.FindElementWait(mainWindow.RegisterSetting.Neutral);
                _driver.ClickElement(neutralElement);
            }

            Thread.Sleep(random.Next(1000, 2000));

            _driver.ExecuteScript($"document.querySelector('{mainWindow.RegisterSetting.CaptchaResponse.Value}').style.display='block'");

            var submitElement = _driver.FindElementWait(mainWindow.RegisterSetting.SubmitForm);

            var siteKeyElement = _driver.FindElementWait(mainWindow.RegisterSetting.SiteKey);

            string siteKey = string.Empty;

            if (siteKeyElement != null)
            {
                siteKey = siteKeyElement.GetAttribute("data-sitekey");
            }

            var    apiUrl     = String.Format(Common.CAPTCHA_API, mainWindow.CapchaKey, siteKey, mainWindow.RegisterSetting.Url);
            string responseID = DriverManager.GetApi(apiUrl);

            if (!string.IsNullOrEmpty(responseID))
            {
                string idToken         = responseID.Split('|')[1];
                var    confirmTokenApi = string.Format(Common.GET_PASS_CAPTCHA_API, mainWindow.CapchaKey, idToken);
                Thread.Sleep(1000 * 60);
                string responseToken = DriverManager.GetApi(confirmTokenApi);

                if (string.IsNullOrEmpty(responseToken) || responseID == "CAPCHA_NOT_READY")
                {
                    Thread.Sleep(1000 * 60);
                    responseToken = DriverManager.GetApi(confirmTokenApi);
                }

                if (!string.IsNullOrEmpty(responseToken))
                {
                    if (responseToken.Contains('|') && responseToken.Split('|')[0] == "OK")
                    {
                        var    arrToken           = responseToken.Split('|');
                        string captchaTokenResult = arrToken[1];
                        IJavaScriptExecutor js    = (IJavaScriptExecutor)_driver;
                        js.ExecuteScript($"document.getElementById('g-recaptcha-response').innerHTML='{captchaTokenResult}';");
                        Thread.Sleep(random.Next(1000, 2000));
                        _driver.ClickElement(submitElement);
                        Thread.Sleep(10000);
                        return(true);
                    }
                    else
                    {
                        Thread.Sleep(1000 * 60);
                        string responseTokenSeconds = DriverManager.GetApi(confirmTokenApi);
                        var    arrTokennew          = responseTokenSeconds.Split('|');
                        if (arrTokennew[0] == "OK")
                        {
                            string captchaTokenResult = arrTokennew[1];
                            IJavaScriptExecutor js    = (IJavaScriptExecutor)_driver;
                            js.ExecuteScript($"document.getElementById('g-recaptcha-response').innerHTML='{captchaTokenResult}';");

                            Thread.Sleep(random.Next(1000, 2000));
                            _driver.ClickElement(submitElement);
                            Thread.Sleep(10000);
                            return(true);
                        }
                    }
                }
            }
            return(false);
        }