Joh*_*ith 3 java arrays selenium select selenium-webdriver
我必须从下拉列表中选择多个值[隐藏一些值,直到我向下滚动].我可以选择多个选项,但我认为必须有更好的方法从下拉列表中选择多个值.
有没有人知道更好的方法来传递参数化的多个值部分并选择一次选项.请记住,有些时候我可能需要选择一个选项,有时候选择两个选项.
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();
}
}
Run Code Online (Sandbox Code Playgroud)
我会做更像这样的事情.它解决了我在评论中提到的问题,并且还清理了一些代码并添加了一些其他错误情况.由于下拉列表是a SELECT
,您可以使用Select
相关的方法,其中一个方法是selectByVisibleText()
您不必循环OPTIONS
并单击它们.
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;
}
}
}
Run Code Online (Sandbox Code Playgroud)