如何通过代码打开Vaadin ComboBox?

时间:2014-08-29 09:33:58

标签: java combobox vaadin

是否可以按代码打开Vaadin ComboBox

我想介绍两个相互依赖的组合框。当用户在第一个中选择一个值时,我希望第二个组合框自动打开可能的选择,这样用户就可以直接选择一个,而不必自己打开第二个组合框。

也许我可以发送一个事件来触发开场?

2 个答案:

答案 0 :(得分:2)

我唯一能想到的是,在将焦点放在组合框之后,尝试向其发送击键(即向下箭头以尝试打开它)。有一个很好的例子here

另一种方式,也许尝试使用Selenium来触发组合框,但这可能是过度杀伤力。例如,请查看vaadin的测试平台。

答案 1 :(得分:2)

我已经在Vaadin 7中使用Selenium WebDriver完成了这项工作:

public void selectValueInCombobox(WebElement cmb, String value) {
    cmb.findElement(By.tagName("div")).click(); //shows the menu
    List<WebElement> findElements = webDriver.findElements(By.cssSelector("td[role='listitem']"));
    findElements.stream()
        .filter(item-> value.equals(item.findElement(By.tagName("span")).getText()))
        .findFirst().get().click();
}

WebElement是Combobox(在html中呈现时为div),value是您想要选择的组合框中的listitem。

  1. 点击最右边的向下箭头按钮(它的内部div)
  2. 其中呈现listitem html元素,只需找到具有角色的那些是listitem,然后通过Java 8的流,使用相同的值进行过滤
  3. 找到后,点击它将被选中