#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");
}