1

在此处输入图像描述

上图显示了选择列表,但它实际上不是选择列表,它由“输入”标签组成,所以我尝试使用 b.text_field.set("argentina") 设置值,但它只聚焦(颜色变为黄色)但它没有设置值,我该怎么做?

该选择列表的代码如下所示

<div class="v-filterselect v-widget v-has-width v-filterselect-prompt" role="combobox" style="width: 100%;">
  <input tabindex="0" class="v-filterselect-input" id="gwt-uid-17" aria-labelledby="gwt-uid-16" style="width: 100%;" type="text" autocomplete="nope">
  <div class="v-filterselect-button" role="button" aria-hidden="true">
  </div>
</div>
4

1 回答 1

3

问题是 Watir-Classic 在设置值后调用了 blur 事件。由于未从下拉列表中选择值,Vaadin 将其视为无效输入并将其重置为“未选择国家/地区”。当您手动与组合框交互时,您可以看到相同的行为:

  1. 单击文本字段
  2. 输入“阿根廷”
  3. 单击页面中的其他位置(即运行模糊事件)

要填充该字段,您需要从下拉列表中选择一个项目。即使输入字段被清除,下拉列表仍然存在(至少在 Watir-Classic 这样做时)。因此,我们无需额外工作即可选择项目。

这是使用 Vaadin 演示页面的示例:

require 'watir-classic'

browser = Watir::Browser.new
browser.goto('http://demo.vaadin.com/sampler/#ui/data-input/multiple-value/combo-box')

country = 'ARGENTINA'

browser.text_field(aria_labelledby: 'gwt-uid-16').when_present.set(country)
browser.div(id: 'VAADIN_COMBOBOX_OPTIONLIST').span(text: country).when_present.click

请注意,这不会复制用户与字段交互时生成的确切事件。但是,如果您只是使用控件,而不是测试字段(即 Vaadin 开发人员),这可能就足够了。

于 2016-08-17T14:30:07.433 回答