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); }