Java Selenium从下拉列表中选择多个选项
我必须从下拉列表中选择多个值[一些值被隐藏,直到我向下滚动]。我可以选择多个选项,但我认为必须有更好的方法从下拉列表中选择多个值Java Selenium从下拉列表中选择多个选项,java,arrays,selenium,select,selenium-webdriver,Java,Arrays,Selenium,Select,Selenium Webdriver,我必须从下拉列表中选择多个值[一些值被隐藏,直到我向下滚动]。我可以选择多个选项,但我认为必须有更好的方法从下拉列表中选择多个值 我正在使用参数化传递值,我想选择 如果下拉列表是多个,我将通过for循环查找所有选项,直到找到参数化值 我在我的测试用例中调用这个方法 test.选择multi(“foo”) test.选择multi(“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();
}
}
public void selectMulti(字符串列表){
WebElement list=driver.findElement(By.id(“abc”));
选择=新选择(列表);
如果(选择.isMultiple()){
试一试{
List optionLists=select.getOptions();
listFound=false;
对于(int i=0;i
我会做更多类似的事情。它解决了我在评论中提到的问题,还稍微清理了代码,并添加了一些额外的错误案例。由于下拉列表是一个SELECT
,因此您可以使用相关的方法,其中一个方法是selectByVisibleText()
,因此您不必循环查看选项并单击它们
public void selectMulti(String[] listItems)
{
Select select = new Select(driver.findElement(By.id("abc")));
if (listItems.length > 1 && !select.isMultiple())
{
Log.fail("The SELECT is not a multiple select but the list provided is larger than 1.");
return;
}
for (String listItem : listItems)
{
try
{
select.selectByVisibleText(listItem);
}
catch (NoSuchElementException e)
{
Log.failed(listItem + " was not an available option");
e.printStackTrace();
return;
}
}
}
你有几个问题,我马上就看出来。1.第一行代码将列表
重新定义为WebElement
,该元素在传递到函数中的字符串列表
上敲打。2.您传入的字符串列表
应该是字符串[]列表
(一个字符串
数组),以处理您要选择多个项目的情况。没问题,很乐意提供帮助。