如何使用 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 - 1
到 Region - 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();
}
结果:
我正在使用 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 - 1
到 Region - 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();
}
结果: