【发布时间】:2015-10-28 23:17:16
【问题描述】:
我必须从下拉列表中选择多个值[隐藏某些值,直到我向下滚动]。我可以选择多个选项,但我认为必须有更好的方法从下拉列表中选择多个值。
- 我正在使用参数化传递值,我想选择。
- 如果下拉菜单是Multiple,我将通过for循环查找所有选项,直到找到参数化值。
- 我在我的测试用例上调用这个方法
- test.selectMulti(“foo”);
- test.selectMulti(“fooz”);
- 我可以选择这两个选项,但我认为这不是最优化的方式。
有没有人知道更好的方法来传递参数化的多个值部分并在找到选项后选择。请记住,有时我可能必须选择一个选项,有时是两个,有时是更多选项。
public void selectMulti (String list) {
WebElement list = driver.findElement(By.id("abc"));
Select select = new Select(list);
if (select.isMultiple()) {
try {
List<WebElement> optionLists = select.getOptions();
listFound = false;
for (int i = 0; i < optionLists.size(); i++) {
String text = optionLists.get(i).getText();
if (text.equals(list)) {
optionLists.get(i).click();
listFound = true; break;
}
} if (listFound) {
Log.pass();
} else {
Log.failed();
}
} catch (StaleElementReferenceException e) {
e.printStackTrace();
}
} else {
Log.failed();
}
}
【问题讨论】:
-
你有几个问题,我马上就知道了。 1. 第一行代码将
list重新定义为WebElement,它重覆了您传递给函数的String list。 2、你传入的String list应该是String[] list(String的数组)来处理多选的情况。
标签: java arrays selenium select selenium-webdriver