diff --git a/src/main/java/com/google/accountgen/registration/GoogleRegistrationHandler.java b/src/main/java/com/google/accountgen/registration/GoogleRegistrationHandler.java index f86b490..0dbd821 100644 --- a/src/main/java/com/google/accountgen/registration/GoogleRegistrationHandler.java +++ b/src/main/java/com/google/accountgen/registration/GoogleRegistrationHandler.java @@ -258,101 +258,38 @@ public class GoogleRegistrationHandler int year = userData.getBirthYear() > 1900 ? userData.getBirthYear() : 1980 + random.nextInt(30); typeWithRandomDelay(yearInput, String.valueOf(year)); - // Месяц (кастомный дропдаун) + // Месяц (теперь обычный ) try { - WebElement genderDropdown = null; - try { - genderDropdown = driver.findElement(By.xpath("//div[@role='combobox'][.//span[text()='Gender']]")); - } catch (Exception e) { - List comboboxes = driver.findElements(By.xpath("//div[@role='combobox']")); - if (comboboxes.size() > 1) { - genderDropdown = comboboxes.get(1); - } + WebElement genderSelect = findElementWithWait(By.cssSelector("select#gender")); + org.openqa.selenium.support.ui.Select select = new org.openqa.selenium.support.ui.Select(genderSelect); + String genderValue = null; + if (userData.getGender() != null) { + if (userData.getGender().toString().equals("MALE")) genderValue = "1"; + else if (userData.getGender().toString().equals("FEMALE")) genderValue = "2"; + // Можно добавить обработку других вариантов } - if (genderDropdown == null) { - logger.error("Не удалось найти дропдаун пола!"); - makeScreenshot("gender_dropdown_not_found"); - } else { - logger.info("Найден дропдаун пола: {}", genderDropdown.getAttribute("outerHTML")); - ((JavascriptExecutor) driver).executeScript("arguments[0].click();", genderDropdown); - Thread.sleep(500); - // Ищем ul с опциями только для пола - WebElement genderList = null; - try { - genderList = genderDropdown.findElement(By.xpath("following-sibling::div/ul")); - } catch (Exception e) { - logger.error("Не удалось найти ul с опциями пола: {}", e.getMessage()); - makeScreenshot("gender_ul_not_found"); - } - final String genderValue; - if (userData.getGender() != null) { - genderValue = userData.getGender().toString().equals("MALE") ? "1" : (userData.getGender().toString().equals("FEMALE") ? "2" : null); - } else { - genderValue = null; - } - List genderOptions = genderList != null ? genderList.findElements(By.cssSelector("li[role='option'][data-value]")) : List.of(); - WebElement genderOption = genderOptions.stream().filter(opt -> genderValue != null && genderValue.equals(opt.getAttribute("data-value"))).findFirst().orElse(null); - if (genderOption == null && !genderOptions.isEmpty()) { - genderOption = genderOptions.get(random.nextInt(genderOptions.size())); - logger.warn("Не найден нужный пол, выбран случайный: {}", genderOption.getText()); - } - if (genderOption != null) { - logger.info("Кликаю по опции пола: {}", genderOption.getAttribute("outerHTML")); - ((JavascriptExecutor) driver).executeScript("arguments[0].click();", genderOption); - } else { - logger.error("Не удалось найти ни одного варианта пола!"); - makeScreenshot("gender_dropdown_not_found"); - } + if (genderValue == null) { + // Если не определено — выбираем случайный вариант (1 или 2) + genderValue = String.valueOf(1 + random.nextInt(2)); + logger.warn("Не определён пол, выбран случайный: {}", genderValue); } + select.selectByValue(genderValue); + logger.info("Выбран пол: {}", genderValue); } catch (Exception e) { logger.error("Ошибка при выборе пола: {}", e.getMessage()); - makeScreenshot("gender_dropdown_error"); + makeScreenshot("gender_select_error"); } // Нажимаем кнопку "Next" @@ -1230,14 +1167,14 @@ public class GoogleRegistrationHandler // Пробуем JS try { - ((JavascriptExecutor) driver).executeScript( + ((JavascriptExecutor) driver).executeScript( "Array.from(document.querySelectorAll('button')).find(el => el.textContent.includes('Confirm')).click();"); logger.info("Нажата кнопка 'Confirm' через JavaScript"); - sleep(2000); + sleep(2000); takeScreenshot(driver, "after_confirm_js"); - } - catch (Exception jsEx) - { + } + catch (Exception jsEx) + { logger.info("Кнопка 'Confirm' не найдена и через JavaScript: {}", jsEx.getMessage()); } }