3

我有一个无法从中选择项目的下拉列表。我可以遍历列表中的所有项目并找到我想要的项目,但 click() 没有选择该项目。

这是代码。任何人都可以帮忙吗?

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

4 回答 4

3
Select comboBox = new Select(webDriver
      .findElementById(comboBoxId));
comboBox.selectByVisibleText(optionText); 
于 2011-04-11T05:45:07.143 回答
1

我想你现在已经看到了,但是本教程显示了一个选择选项的示例,如下所示:

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();
}

因此,您应该调用 setSelected 方法,而不是调用 click

你也可以使用

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

更多信息在这里:http ://seleniumhq.org/docs/09_webdriver.html

我仍然对您的问题感到困惑,因为您发布了一些包含选项列表的 html,但是在您的代码中,您通过类名查找了一个在您的 html 中不存在的元素。也许您只是想点击某种下拉菜单而不是选择框选项..

于 2011-01-13T00:03:42.227 回答
0

你应该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");
    }
}
于 2010-12-08T14:09:09.360 回答
-1

如果您出于某种目的尝试触发 onselect 事件,则可以使用 sendkeys("\t). 即模拟元素的制表符。

于 2011-12-12T12:16:29.160 回答