Selenium, Java: как выбрать и кликнуть на элемент из выпадающего списка, если он представлен тегами select и ul одновременно
Я начинающий исследователь Selenium Java. Не судите строго.
Версии стека: Java: 20 Selenium: 4.8.2 ChromeDriver:109.0.5414.74
Задача: существует список элементов пола (мужской и женский), находящийся в выпадающем списке. Необходимо найти элемент "Мужской" и кликнуть на него.
Код выпадающего списка на странице:
<p>Пол</p>
<div class="SumoSelect" tabindex="0">
<select name="CLIENT_GENDER" style="width: calc(100%); display: none;" id="CLIENT_GENDER" class="">
<option value="0">-</option>
<option value="1">Мужской</option>
<option value="2">Женский</option>
</select>
<p class="CaptionCont SlectBox" style="width: calc(100%);">
<span>-</span>
<label><i></i></label>
</p>
<div class="optWrapper">
<ul class="options">
<li data-val="0" class="selected">
<label>-</label>
</li>
<li data-val="1">
<label>Мужской</label>
</li>
<li data-val="2">
<label>Женский</label>
</li>
</ul>
</div>
</div>
Пробовал несколько вариантов:
1.Поиск через класс Select:
Select client_gender = new
Select(driver.findElement(By.xpath("//select[@name='CLIENT_GENDER']")));
client_gender.selectByValue("1");
В том числе через
Select client_gender = new
Select(driver.findElement(By.xpath("//select[@name='CLIENT_GENDER']")));
client_gender.selectByVisibleText("Мужской");
Ошибка: Exception in thread "main" org.openqa.selenium.ElementNotInteractableException: element not interactable: Element is not currently visible and may not be manipulated
2.Пробовал найти и кликнуть через Excepted conditions
WebDriverWait ulWait = new WebDriverWait(driver, Duration.ofSeconds(30));
ulWait.until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath((//ul[@class='options']")));
WebElement ulElement = driver.findElement(By.linkText("Мужской"));
ulElement.click();
Ошибка: Exception in thread "main" org.openqa.selenium.TimeoutException: Expected condition failed: waiting for visibility of all elements located by By.xpath: //ul[@class='options'] (tried for 30 second(s)
- Пробовал классическим образом через findelements и click, но также всё тщетно. Выдаёт ошибку, что элемент не кликабельный. Искал и кликал по тегам div, ul, p
Подскажите, пожалуйста, как найти элемент в данном случае (когда дублируются элементы в теге ul) и кликнуть на него (желательно с кодом для моего понимания)