2014-08-29 40 views
2

是否可以通過編碼方式打開VaadinComboBox如何通過代碼打開Vaadin組合框?

我想介紹兩個相互依賴的組合框。當用戶在第一個選擇一個值時,我希望第二個組合框自動打開可能的選擇,以便用戶可以直接選擇一個,而不必自己打開第二個組合框。

也許有一個事件,我可以發送觸發開幕?

+0

是'.focus()'夠了嗎? – cfrick 2014-08-29 13:27:56

+0

不,focus()只是將光標放置在組合框中,而沒有任何操作。 – membersound 2014-08-29 13:44:37

回答

2

我能想到的唯一的事情是,在將焦點放在組合框之後,嘗試發送一個按鍵(即向下箭頭嘗試使其打開)。有一個很好的例子here

另一種方式,也許嘗試和使用Selenium來觸發組合框,但這可能矯枉過正。有關這方面的例子,請查看vaadin的測試平臺。

1

我與硒的webdriver做到了這Vaadin 7:

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格式呈現的股利),和價值是你想選擇的組合框的列表項。

  1. 它點擊最右側的向下箭頭按鈕(其內格)
  2. 這使得該列表項的HTML元素,只是覺得那些角色列表項,然後通過Java 8的流,具有相同值過濾器
  3. 一旦找到,點擊它就會被選中