Я работаю над проектом Selenium Java для тестирования демонстрационного сайта OrangeHRM. Мне нужно выбрать значение из выпадающей части «статус статуса занятости», но раскрывающийся список создается с использованием тегов вместо традиционного элемента .
< P> Я могу открыть выпадающий список, но я не могу найти и выбрать опцию. Выпачающее меню исчезает, как только я пытаюсь осмотреть или взаимодействовать с ним, что затрудняет местонахождение. Когда раскрывающийся список открыт, как контейнер меню, так и выпадающий триггер находятся на одном и том же уровне DOM (братьев и сестер), что добавляет к выбору опции. < /P>
Что я пробовал: < /p>
WebElement dropdownTrigger = driver.findElement(By.xpath("//label[text()='Employment Status']/parent::div/following-sibling::div//div[@class='oxd-select-text oxd-select-text--active']"));
dropdownTrigger.click();
< /code>
< /li>
Расположение параметров раскрытия (не работает ❌). < /p>
Я попытался использовать Webdriverwait, чтобы ждать Выпадающий контейнер после нажатия: < /p>
WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10));
WebElement dropdownContainer = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[text()='Employment Status']/parent::div/following-sibling::div//div[@class='oxd-select-text oxd-select-text--active']/following-sibling::div[1]")));
< /code>
Тем не менее, это приводит к времени, что означает, что селен не может найти параметры раскрытия. < /p>
< /li>
Альтернатива. Xpath Попытка: < /p>
WebElement dropdownContainer = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[text()='Employment Status']/parent::div/following-sibling::div//div[@class='oxd-select-text oxd-select-text--active']/following-sibling::div[@class='oxd-select-dropdown']")));
Тем не менее, возникает ту же Timeoutexception. >
Для отладки я попытался получить все детские элементы внутри раскрывающегося списка (после нажатия его) и распечатать их данные: < /p>
List dropdownElements = dropdownContainer.findElements(By.xpath(".//*"));
System.out.println("Number of elements inside the dropdown: " + dropdownElements.size());
< /code>
< /li>
< /ol>
Сообщение об ошибке: < /p>
org. openqa.selenium.timeoutexception: Ожидаемое условие не удалось: ожидание видимости элемента, расположенного by.xpath: (выпадающий XPath) (пробое в течение 10 секунд) < /p>
< /blockquote>
Экриншот:
Ожидаемый результат: < /p>
Я хочу надежно найти параметры раскрытия и нажмите на конкретную опцию (например, «Контракт на полный рабочий день»). < /p>
< P> Вопросы: < /p>
Как я могу правильно найти и выбрать опцию из этого раскрывающегося списка на основе Div в Selenium java? < /li>
< li> Есть ли альтернативный подход, который я должен рассмотреть (например, выполнение JavaScript)?
Я работаю над проектом Selenium Java для тестирования демонстрационного сайта OrangeHRM. Мне нужно выбрать значение из выпадающей части «статус статуса занятости», но раскрывающийся список создается с использованием тегов вместо традиционного элемента . < P> Я могу открыть выпадающий список, но я не могу найти и выбрать опцию. Выпачающее меню исчезает, как только я пытаюсь осмотреть или взаимодействовать с ним, что затрудняет местонахождение. Когда раскрывающийся список открыт, как контейнер меню, так и выпадающий триггер находятся на одном и том же уровне DOM (братьев и сестер), что добавляет к выбору опции. < /P> Что я пробовал: < /p> [list] [*] Открытие раскрывающегося списка (работа ✅) < /p> [code]WebElement dropdownTrigger = driver.findElement(By.xpath("//label[text()='Employment Status']/parent::div/following-sibling::div//div[@class='oxd-select-text oxd-select-text--active']")); dropdownTrigger.click(); < /code> < /li> Расположение параметров раскрытия (не работает ❌). < /p> Я попытался использовать Webdriverwait, чтобы ждать Выпадающий контейнер после нажатия: < /p> WebDriverWait wait = new WebDriverWait(driver, Duration.ofSeconds(10)); WebElement dropdownContainer = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[text()='Employment Status']/parent::div/following-sibling::div//div[@class='oxd-select-text oxd-select-text--active']/following-sibling::div[1]"))); < /code> Тем не менее, это приводит к времени, что означает, что селен не может найти параметры раскрытия. < /p> < /li> Альтернатива. Xpath Попытка: < /p> WebElement dropdownContainer = wait.until(ExpectedConditions.visibilityOfElementLocated(By.xpath("//label[text()='Employment Status']/parent::div/following-sibling::div//div[@class='oxd-select-text oxd-select-text--active']/following-sibling::div[@class='oxd-select-dropdown']"))); [/code] Тем не менее, возникает ту же Timeoutexception. > Для отладки я попытался получить все детские элементы внутри раскрывающегося списка (после нажатия его) и распечатать их данные: < /p> List dropdownElements = dropdownContainer.findElements(By.xpath(".//*")); System.out.println("Number of elements inside the dropdown: " + dropdownElements.size()); < /code> < /li> < /ol> Сообщение об ошибке: < /p>
org. openqa.selenium.timeoutexception: Ожидаемое условие не удалось: ожидание видимости элемента, расположенного by.xpath: (выпадающий XPath) (пробое в течение 10 секунд) < /p> < /blockquote> Экриншот:
Ожидаемый результат: < /p> Я хочу надежно найти параметры раскрытия и нажмите на конкретную опцию (например, «Контракт на полный рабочий день»). < /p> < P> Вопросы: < /p>
Как я могу правильно найти и выбрать опцию из этого раскрывающегося списка на основе Div в Selenium java? < /li> < li> Есть ли альтернативный подход, который я должен рассмотреть (например, выполнение JavaScript)? [/list]