如何使用Watir将文本输入到react-selectize-control中

时间:2016-07-19 20:59:30

标签: watir watir-classic

我在页面上有以下代码:

 <div class="col-md-5 col-lg-3">
  <div class="react-selectize bootstrap3 root-node simple-select open">
   <div class="react-selectize-control">
    <div class="react-selectize-placeholder">testing!</div>
     <div class="react-selectize-search-field-and-selected-values">
      <input class="resizable-input" style="width: 4px;" type="input">

如果我在物理上选择输入字段,然后使用watir-classic运行以下内容:

BROWSER.div(:class => 'col-md-5 col-lg-3')
       .div(:class => 'react-selectize-search-field-and-selected-values')
       .text_field(:class => 'resizable-input')
       .send_keys('Magg')

它会在字段中输入Magg,但如果我不手动选择字段,我似乎无法输入文字。

我尝试过以下方法:

BROWSER.div(:class => 'col-md-5 col-lg-3')
       .div(:class => 'react-selectize-search-field-and-selected-values')
       .text_field(:class => 'resizable-input')

.set('Magg')
.fire_event('onfocus')
.fire_event('mousedown')
.fire_event('mouseup')
使用

.parent.text_field(:class => 'resizable-input')
.parent.input(:class => 'resizable-input').set('Magg')
.input(:class => 'resizable-input').set('Magg')
.input(:class => 'resizable-input').send_keys('Magg')

我一直在使用控件与开发人员合作,我们都不知道如何给予控件焦点,以便send_keys无需手动选择控件即可工作。任何指导都将不胜感激。

2 个答案:

答案 0 :(得分:1)

首先 - 强制性警告Watir Classic已被弃用,您应该使用Watir WebDriver。 (这可能会解决这个问题)

第二 - 技术上:div(:class => 'col-md-5 col-lg-3')应为div(:css => '.col-md-5.col-lg-3'),因为上课应该是单数。

您是否曾尝试在element.fire_event(:click)之前执行element.set

答案 1 :(得分:1)

请注意,HTML的输入标记的“type”值无效。每W3.org,“输入”的类型不是输入标记的有效类型选择。

这可能是导致您期望工作的方法(例如.set)失败的原因。这也意味着返回更具体的输入子类型(例如.text_field)的所有watir方法都无法选择该标记。

Watir根据输入标记的特定子类型定义特定的输入相关方法(例如.set,.unset),并具有选择这些特定输入类型(例如.button)的方法。通常你会使用它的子类型的方法选择一个输入标签,但由于该值无效,在这种情况下这不是一个选项,你被迫使用.input。但正如我们刚刚讨论的那样,watir中的输入对象没有像.set这样的方法。因此,您唯一的后备是使用.sendkeys向元素发送击键。

如果是我,我会在该HTML上写一个错误,根据W3规范它没有使用'type'的正确值。

修复HTML有效可能会使Watir或任何其他自动化工具更好地工作,特别是那些基于webdriver的工具。

相关问题