как выбрать элемент в многопозиционном поле в seleniumе webdriver

В настоящее время работает над Selenium WebDriver и использует Java . Я хочу знать, чтобы выбирать значения в поле Multi-select . Параметры уже выбраны. Если я хочу выбрать любую из двух или более опций. как можно выполнить действие.

HTML выглядит следующим образом:

 ADVIP ADVLEG ADVSEC Boot H323 IBC MULTI None  

введите описание изображения здесь

В функции pass в списке значений используется любой разделитель, который позволяет использовать запятую как разделитель:

 public static void selectMultipelValues(String multipleVals) { String multipleSel[] = multipleVals.split(","); for (String valueToBeSelected : multipleSel) { new Select(driver.findElement(By.id(propId))).selectByVisibleText(valueToBeSelected); driver.findElement(By.id(ddObj)).sendKeys(Keys.CONTROL); } } 

Если у вас есть статический метод Utils :

 public static void selectTheDropDownList(WebElement dropDown,String text) { Select select = new Select(dropDown); select.selectByVisibleText(text); } 

и вы можете сделать так, чтобы выбрать несколько опций:

 Utils.selectTheDropDownList(dropDown,text1); Utils.selectTheDropDownList(dropDown,text2); . . . Utils.selectTheDropDownList(dropDown,textn); 

Это должно сработать.

Это работает для меня:

 final String[] textOptions = {"value1", "value2"}; final WebElement element = driver.findElement(By.id("someId")); final Select dropdown = new Select(element); final List options = dropdown.getOptions(); final Actions builder = new Actions(driver); final boolean isMultiple = dropdown.isMultiple(); if (isMultiple) { dropdown.deselectAll(); } builder.keyDown(Keys.CONTROL); for (String textOption : textOptions) { for (WebElement option : options) { final String optionText = option.getText().trim(); if (optionText.equalsIgnoreCase(textOption)) { if (isMultiple) { if (!option.isSelected()) { builder.click(option); } } else { option.click(); } break; } } } builder.keyUp(Keys.CONTROL).build().perform(); 

Пожалуйста, проверьте, помогает ли ниже URL-адрес

http://selenium.polteq.com/en/controlling-a-selectbox-or-dropdownbox-with-selenium-webdriver/

Вы можете проверить ниже вариант

 public void selectByValue() { Select selectBox = new Select(driver.findElement(By .cssSelector("select#id_contact"))); selectBox.selectByValue("2"); } public void selectByIndex() { Select selectBox = new Select(driver.findElement(By.cssSelector("select#id_contact"))); selectBox.selectByIndex(2); } 

вы можете изменить его в соответствии с вашим требованием

Вам нужно щелкнуть элемент с элементом управления. Вот документация, как сделать такое действие https://code.google.com/p/selenium/wiki/AdvancedUserInteractions

В нашем случае это может быть:

 Select select = new Select(element); Actions builder = new Actions(driver); builder.keyDown(Keys.CONTROL) .click(select.getOptions().get(2)) .keyUp(Keys.CONTROL); builder.build().perform(); 

Для нескольких разделов вы можете:

 Select select = new Select(element); Actions builder = new Actions(driver); builder.keyDown(Keys.CONTROL) .click(select.getOptions().get(2)) .click(select.getOptions().get(3)) .click(select.getOptions().get(4)) .keyUp(Keys.CONTROL); builder.build().perform(); 

Используйте приведенный ниже код, его просто и легко! Это сработало для меня.

 Select dd1 = new Select(driver.findElement(By.name("swPacks[]"))); dd1.selectByVisibleText("ADVIP"); dd1.selectByVisibleText("ADVLEG"); 
 new Select(driver.findElementByXPath("XXXXXXXXXXX"))).selectByIndex(2); 

Я написал такой код. 1-й я снял все значения в окне выбора нескольких, затем я выбрал значения, которые я хочу .. Он работает правильно ..

 Log.info("Clicking on Softwarepack dropdown"); JavascriptExecutor executor31 = (JavascriptExecutor)driver; executor31.executeScript("document.getElementById('swpacksId').style.display='block';"); Select select31 = new Select(driver.findElement(By.id("swpacksId"))); select31.deselectAll(); select31.selectByVisibleText("ADVLEG"); Thread.sleep(6000); JavascriptExecutor executor32 = (JavascriptExecutor)driver; executor32.executeScript("document.getElementById('swpacksId').style.display='block';"); Select select32 = new Select(driver.findElement(By.id("swpacksId"))); select32.selectByVisibleText("SIP");