如何使用selenium java从多选下拉列表中显示所选选项?

时间:2017-03-23 10:39:21

标签: selenium selenium-webdriver

我正在尝试从多选下拉列表中显示所有选定的选项。但没有得到正确的方法来做到这一点。请帮帮我。

以下是下拉列表的html代码:

<select multiple id="fruits">
     <option value="banana">Banana</option>
     <option value="apple">Apple</option>
     <option value="orange">Orange</option>
     <option value="grape">Grape</option>
</select>

以下是我正在尝试的代码:

public void dropDownOperations()
    {
        driver.get("http://output.jsbin.com/osebed/2");
        Select DDLIST = new Select(driver.findElement(By.id("fruits")));
        DDLIST.selectByIndex(0);
        String currentvalue = DDLIST.getFirstSelectedOption().getText();
        System.out.println(currentvalue);
        DDLIST.selectByIndex(1);
        String currentvalue1 = DDLIST.getFirstSelectedOption().getText();
        System.out.println(currentvalue1);          
    }

我也试过这段代码:

这里我得到了这个输出:

  

[[[[[ChromeDriver:Chrome on XP(69aee19e9922ca218ff47c0ccdf1bbbc)] - &gt;   id:fruits]] - &gt;标签名称:选项],[[[[ChromeDriver:Chrome上的Chrome   (69aee19e9922ca218ff47c0ccdf1bbbc)] - &gt; id:fruits]] - &gt;标签名称:   选项]

public void dropDownOperations1()
    {
        driver.get("http://output.jsbin.com/osebed/2");
        Select DDLIST = new Select(driver.findElement(By.id("fruits")));
        DDLIST.selectByIndex(0);
        DDLIST.selectByIndex(1);
        List<WebElement> currentvalue1 = DDLIST.getAllSelectedOptions();
        System.out.println(currentvalue1);          
    }

5 个答案:

答案 0 :(得分:2)

尝试以下代码,它将从下拉列表中选择逐个选项。

Select DDLIST = new Select(driver.findElement(By.id("fruits")));
DDLIST.selectByIndex(0);
DDLIST.selectByIndex(1);

List<WebElement> selectedOptions = DDLIST.getAllSelectedOptions();
for(int i=0; i<selectedOptions.size(); i++)
{
    System.out.println(DDLIST.getOptions().get(i).getText());
}

答案 1 :(得分:2)

你的第二种方法应该可以正常使用一个小修复。 getAllSelectedOptions()会将所选选项列表作为WebElement返回。您需要遍历列表以从WebElement获取文本。

List<WebElement> selectedOptions = DDLIST.getAllSelectedOptions();
for (WebElement option : selectedOptions){
        System.out.println(option.getText());
}

答案 2 :(得分:2)

试试这个:

  List<WebElement> allSelected = select.getAllSelectedOptions();

      Iterator itr = allSelected.iterator();

      while(itr.hasNext()){

          WebElement item = (WebElement) itr.next();

          System.out.println(item.getText());
      }

答案 3 :(得分:1)

试试这个:

Route::get('cats/{cat}/delete', function(Furbook\Cat $cat){
     $cat->delete();    
     return redirect('cats.index')->withSuccess('Cat has been deleted.');      
});

等等。而不是使用变量并尝试它。

答案 4 :(得分:0)

试试这个:

select UPPER(a) , count(*) from my_table group by UPPER(a) .