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

我正在使用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)更改组合框的值?

最佳答案 事实上,你的情景似乎并没有像预期的那样发挥作用,至少对于Vaadin 7.7.3& TB 4.1.0.alpha1我有.

查看
sources(第43行atm),在组合为只读的特定情况下,TestBench将使其可写,发送指定的文本,并从弹出建议列表中选择相应的项目.尽管如此,在一个小的调试会话期间,您可以很容易地看到text.equals(popupSuggestions.get(0)不等于Region – 5,因为他们希望.

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

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

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

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

选择地区 – 我做了:

@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();
}

结果:

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

点赞