如何使用Vaadin Testbench从ComboBox菜单中选择元素?

时间:2016-10-03 10:18:00

标签: combobox vaadin test-bench

我正在使用vaadin版本7.6.4和Testbench(4.0.3)进行一些集成测试。

我有几个组合框的视图。其中一个具有此属性comboBox.setTextInputAllowed(false);出于测试目的,我想更改组合框上的默认值,我需要选择一个不同的元素,然后选择默认值。

要选择一个元素,我尝试了以下代码:

 $(ComboBoxElement.class).selectByText("ElementName");

但这只适用于comboBox.setTextInputAllowed(true);

我也尝试使用sendkeys()更改所选值:

$(ComboBoxElement.class).openPopup();
$(ComboBoxElement.class).sendKeys(keys.ARROW_DOWN);
$(ComboBoxElement.class).endKeys(Keys.ENTER);

此代码正确打开comboBox弹出窗口,但不选择任何项目。如果我将焦点设置为setFocus();

,则不会

有人可以告诉我如何更改带有setTextInputAllowed(false)属性的组合框的值?

1 个答案:

答案 0 :(得分:1)

事实上,你的情景似乎没有像预期的那样发挥作用,至少对于Vaadin 7.7.3& TB 4.1.0.alpha1我有。 查看sources(第43行atm),在组合为只读的特定情况下,TestBench将使其可写,发送指定的文本,并从中选择相应的项目弹出建议列表。尽管如此,在一个小型调试会话期间,您可以轻松地看到text.equals(popupSuggestions.get(0)不等于他们希望的Region - 5

debug

总之,这可能是TB本身的一个错误。我有一些假设,但我没有时间彻底调查atm如何以及为什么。

作为一种变通方法,您可以打开弹出窗口,使用XPath表达式查找正确的项目并单击它。我有一个带有组合的演示应用,其中包含名为Region - 1Region - 10的项目。

combo content

选择Region - 5我做了:

@Test
public void shouldOpenGridColumnVisibilityPopupAndSelectItems() {
    getDriver().get("http://localhost:8080/");
    ComboBoxElement combo = $(ComboBoxElement.class).first();
    combo.openPopup();
    findElement(By.xpath("//*[@id='VAADIN_COMBOBOX_OPTIONLIST']//span[text()='Region - 5']")).click();
}

结果:

workaround result