Невозможно выбрать значение из раскрывающегося списка на основе DIV в OrangeHRMJAVA

Программисты JAVA общаются здесь
Ответить
Anonymous
 Невозможно выбрать значение из раскрывающегося списка на основе DIV в OrangeHRM

Сообщение Anonymous »

Я работаю над проектом Selenium Java для тестирования демонстрационного сайта OrangeHRM. Мне нужно выбрать значение из выпадающей части «статус статуса занятости», но раскрывающийся список создается с использованием тегов вместо традиционного элемента .
< P> Я могу открыть выпадающий список, но я не могу найти и выбрать опцию. Выпачающее меню исчезает, как только я пытаюсь осмотреть или взаимодействовать с ним, что затрудняет местонахождение. Когда раскрывающийся список открыт, как контейнер меню, так и выпадающий триггер находятся на одном и том же уровне DOM (братьев и сестер), что добавляет к выбору опции. < /P>
Что я пробовал: < /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)?


Подробнее здесь: https://stackoverflow.com/questions/794 ... -orangehrm
Ответить

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

Вернуться в «JAVA»