【问题标题】:How to open a Vaadin ComboBox by code?如何通过代码打开 Vaadin ComboBox?
【发布时间】:2014-10-23 07:16:36
【问题描述】:

是否可以通过代码打开VaadinComboBox

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

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

【问题讨论】:

  • .focus()够了吗?
  • 不,focus() 只是将光标放在组合框中,没有任何操作。

标签: java combobox vaadin


【解决方案1】:

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

另一种方式,也许是尝试使用 Selenium 来触发组合框,但这可能是矫枉过正。有关这方面的示例,请查看 vaadin 的测试平台。

【讨论】:

    【解决方案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 是您要选择的组合框中的列表项。

    1. 它点击最右边的向下箭头按钮(它是一个内部 div)
    2. 渲染listitem html元素,只要找到角色是listitem的,然后通过Java 8的流,用相同的值过滤
    3. 找到后点击即可选中

    【讨论】:

      猜你喜欢
      • 2013-03-17
      • 1970-01-01
      • 1970-01-01
      • 2019-08-16
      • 2018-10-08
      • 1970-01-01
      • 1970-01-01
      • 2014-12-09
      • 1970-01-01
      相关资源
      最近更新 更多