我有一个下拉列表,我无法从中选择项目。我可以遍历列表中的所有项目并找到我想要的项目,但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>
答案 0 :(得分:3)
Select comboBox = new Select(webDriver
.findElementById(comboBoxId));
comboBox.selectByVisibleText(optionText);
答案 1 :(得分: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();
}
因此,不应调用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中不存在。也许您只是想点击某种类型下拉菜单而不是选择框选项..
答案 2 :(得分:0)
您应首先找到select
元素,然后遍历其option
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");
}
}
答案 3 :(得分:-1)
如果您出于某种目的尝试触发onselect事件,可以使用sendkeys(“\ t)。即模拟元素的标签。