4

我正在使用 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);

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

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

4

1 回答 1

1

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

调试

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

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

组合内容

要选择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();
}

结果:

变通方法结果

于 2016-10-03T16:23:35.947 回答