Невозможно выбрать элемент в выпадающем списке - PullRequest
3 голосов
/ 24 ноября 2010

У меня есть выпадающий список, из которого я не могу выбрать элемент. Я могу просмотреть все элементы в списке и найти нужный, но щелчок () не выбирает элемент.

Вот код. Может ли кто-нибудь помочь?

driver.findElement(By.id("components-multi-select")).findElement(By.className("icon")).click();  
driver.findElement(By.id("components-suggestions"));

List<WebElement> componentList = driver.findElements(By.className("aui-list-item"));
for (WebElement component : componentList){
    System.out.println(component.getText());
    if (component.getText().contains(newComponent)){
        component.click();
        break;
    }
    else{
        System.out.println("not equal");
    }

Вот HTML-код раскрывающегося списка компонента.

<div class="field-group aui-field-componentspicker frother-control-renderer" >
<label for="components">Component/s</label>

<div class="ajs-multi-select-placeholder textarea long-field"></div>

<select class="select  hidden " id="components" multiple="multiple" name="components" size="5" data-remove-null-options="true">
  <option value="-1">
    Unknown
  </option>
  <option selected="selected" title="Component 1  - A test component" value="10240">
    Component 1
  </option>
  <option title="Component 2  - " value="10242">
    Component 2
  </option>
  <option title="Lee 2 " value="10371">
    Lee 2
  </option>
  <option title="Roy " value="10370">
    Roy
  </option>
  <option title="Test Documentation " value="10241">
    Test Documentation
  </option>
</select>

Ответы [ 4 ]

3 голосов
/ 11 апреля 2011
Select comboBox = new Select(webDriver
      .findElementById(comboBoxId));
comboBox.selectByVisibleText(optionText); 
1 голос
/ 13 января 2011

Я полагаю, вы уже видели это, но в учебном пособии показан пример выбора таких вариантов:

WebElement select = driver.findElement(By.xpath("//select"));
List<WebElement> allOptions = select.findElements(By.tagName("option"));
for (WebElement option : allOptions) {
    System.out.println(String.format("Value is: %s", option.getValue()));
    option.setSelected();
}

Поэтому вместо вызова click вы должны вызвать метод setSelected

Также вы можете использовать

Select select = new Select(driver.findElement(By.xpath("//select")));
select.deselectAll();
select.selectByVisibleText("Edam");

Подробнее здесь: http://seleniumhq.org/docs/09_webdriver.html

Я все еще смущен вашим вопросом, потому что вы опубликовали какой-то html, у которого есть список опций, но в своем коде вы ищете элемент по имени класса, которого нет в вашем html. выпадающего меню, а не опция выбора поля ..

0 голосов
/ 12 декабря 2011

Если вы пытаетесь вызвать событие onselect для какой-то цели, вы можете использовать sendkeys ("\ t). Т.е. имитировать табулирование элемента.

0 голосов
/ 08 декабря 2010

Сначала вы должны найти свой элемент select, а затем выполнить итерацию по его option s

WebElement selectElement = driver.findElement(By.id("components"));

List<WebElement> componentList = selectElement.findElements(By.tagName("option"));
for (WebElement component : componentList){
    System.out.println(component.getText());
    if (component.getText().contains(newComponent)){
        component.click();
        break;
    }
    else{
        System.out.println("not equal");
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...