Как выбрать отдельные динамические параметры мультиселекции через Selenium и Java - PullRequest
0 голосов
/ 13 марта 2019

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

Значения в множественном выборе: Тест 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(); 
    } 
}

Ответы [ 2 ]

0 голосов
/ 14 марта 2019

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

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

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

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");
}
0 голосов
/ 14 марта 2019

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

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

Это помогает?

...