如何使用 Vaadin Testbench select ComboBox 菜单中的元素?

How to select an element from a ComboBox menu using Vaadin Testbench?

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

我有一个包含多个组合框的视图。其中之一有此 属性 comboBox.setTextInputAllowed(false); 出于测试目的,我想更改组合框上的默认值,我需要 select 与默认元素不同的元素。

到select一个元素我试过下面的代码:

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

但这仅在 comboBox.setTextInputAllowed(true);

时有效

我也曾尝试使用 sendkeys() 更改 selected 值:

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

此代码可以正确打开组合框弹出窗口,但不会 select 任何项目。如果我用 setFocus();

设置焦点

谁能告诉我如何使用 属性 setTextInputAllowed(false) 更改组合框的值?

确实,您的方案似乎没有按预期工作,至少在我使用的 Vaadin 7.7.3 和 TB 4.1.0.alpha1 中是这样。 查看 sources(第 43 行 atm),在组合为只读的特定情况下,TestBench 将使它 可写 ,发送指定的文本,然后选择弹出建议列表中的相应项目。尽管如此,在小型调试会话期间,您可以很容易地看到 text.equals(popupSuggestions.get(0) 并不像他们希望的那样等于 Region - 5

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

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

的项目的组合

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

结果: