【问题标题】:Selenium Select Multiple options from dropdownSelenium 从下拉列表中选择多个选项
【发布时间】:2015-10-28 23:17:16
【问题描述】:

我必须从下拉列表中选择多个值[隐藏某些值,直到我向下滚动]。我可以选择多个选项,但我认为必须有更好的方法从下拉列表中选择多个值。

  1. 我正在使用参数化传递值,我想选择。
  2. 如果下拉菜单是Multiple,我将通过for循环查找所有选项,直到找到参数化值。
  3. 我在我的测试用例上调用这个方法
  4. test.selectMulti(“foo”);
  5. test.selectMulti(“fooz”);
  6. 我可以选择这两个选项,但我认为这不是最优化的方式。

有没有人知道更好的方法来传递参数化的多个值部分并在找到选项后选择。请记住,有时我可能必须选择一个选项,有时是两个,有时是更多选项。

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


【解决方案1】:

我会做更多这样的事情。它解决了我在评论中提到的问题,还稍微清理了代码并添加了一些额外的错误案例。由于下拉列表是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;
        }
    }
}

【讨论】:

  • 没问题,很乐意提供帮助。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2022-10-13
  • 2021-05-24
  • 1970-01-01
  • 2016-07-18
相关资源
最近更新 更多