Как выбрать отдельные динамические параметры множественного выбора с помощью Selenium и Java

#selenium #select #drop-down-menu #webdriver #webdriverwait

#селен #выберите #выпадающее меню #webdriver #webdriverwait

Вопрос:

Привет, я пытаюсь автоматизировать процесс, при котором мой скрипт будет выбирать отдельные значения в поле множественного выбора и выполнять некоторые действия на основе результатов. Ниже приведен мой код. проблема с моим кодом в том, что он выберет все значения множественного выбора, вместо этого он должен выбрать отдельный элемент в списке. Все значения списка динамичны по своей природе, и мы не можем предсказать, что произойдет. Прошу вашей помощи в этом отношении!

Значениями в множественном выборе являются тест 1, тест 2 и так далее.

 public void filterByTemplateName() throws Exception 
{
    WebDriverWait wait = new WebDriverWait(driver, 15);
    wait.until(ExpectedConditions.invisibilityOfElementLocated(By.xpath("performing action")));
    WebElement eventName = driver.findElement(By.xpath(".//select[@name='Test_templateName']']")); 
    driver.switchTo().frame("test_frame");
    Select sel = new Select(templateName);
    List<WebElement> options = sel.getOptions();
    for (WebElement temp:options) 
    {
        temp.click(); 
    } 
}
  

Ответ №1:

Поскольку вы инициализировали эту sel переменную как Select объект, вы должны иметь возможность использовать методы, которые Select для этого предусмотрены:

 for (WebElement temp:options) {
    sel.selectByVisibleText(temp);
}
  

Помогает ли это?

Ответ №2:

Учитывая все ваши критерии тестирования:

  • Выбор отдельного элемента из списка множественного выбора один за другим посредством итерации.
  • Значения списка являются динамическими.
  • Вы не можете предсказать, что произойдет.

Чтобы выбрать отдельный элемент из списка, вы можете использовать следующее решение:

 WebElement dropdown_element = driver.findElement(By.xpath("xpath_dropdown_element"));
Select templateName = new Select(dropdown_element);
List<WebElement> options = templateName.getOptions();
for(int i=0; i<options.size(); i  )
{
    new WebDriverWait(driver, 20).until(ExpectedConditions.visibilityOfAllElementsLocatedBy(By.xpath("./dropdown_element//options"))).get(i).click();
    System.out.println("You can perform your other task for this option selection");
}