0

使用 watir-webdriver,我正在尝试设置文本字段的值。

browser.text_field(:id, "phoneNumbers_value_input").set("5555551234")

当我运行该命令时,我可以看到 watir 找到了该字段,因为光标设置在该字段上,但是没有输入任何文本。我也尝试了 send_keys 和 append 命令,但似乎没有任何效果。这些方法不会引发异常。

我可以在该字段和页面上的其他字段之间找到的唯一区别(一切正常)是它上面有这个 JQuery 掩码。

$(selector).mask("(999) 999-9999");

关于如何设置文本字段的任何想法?

编辑:

更多的Javascript:

selector = '#' + id(field.id) + '_input';
if (field.format == 'phone') {
  $(selector).mask("(999) 999-9999");
}

字段的 HTML:

<div id="phoneNumbers_value_form_item" class="form_item validated no_focus">
  <label for="phoneNumbers_value" class="form_label">phone</label>
  <input type="text" value="" name="phoneNumbers[][value]" id="phoneNumbers_value_input" class="text">
  <div class="tip">&nbsp;</div>
  <div class="tip_validating">

  </div>
  <div class="tip_error">

  </div>
</div>
4

2 回答 2

1

我在您提供的 HTML 中没有看到任何与您的帖子顶部的 ruby​​ 代码中处理的文本输入字段相匹配的元素。例如,没有任何 ID 为“电话”的内容

根据您问题中的 HTML,我希望以下内容可以正常工作

browser.text_field(:id, "phoneNumbers_value_input").set("5555551234")

查看您在评论中链接的示例页面,当我在 ID 为“电话”的输入字段上使用谷歌浏览器和“检查元素”功能时,我看到有许多与该字段关联的事件侦听器(模糊, 焦点, 输入, keydown, keypress, unmask)

“焦点”特别引起了我的注意,在该字段上看到它让我认为您可能需要首先针对同一元素触发一个事件,例如 onfocus 事件,以激活该字段,然后尝试设置值。

您会注意到,当您手动操作时,该字段开始为空白,但是一旦获得焦点,它就会向用户显示输入掩码的格式,这很可能需要首先发生,然后才能看到任何类型的输入。

编辑:在这种情况下,根据提问者的反馈,答案是他们需要首先针对文本字段触发“取消屏蔽”事件,然后 .set 设置他们想要的值,以使事情正常工作在自动化测试时正确。这不会行使字段屏蔽功能,但是我再次怀疑这种情况下的测试任务是广泛测试第 3 方(JQuery)插件,他们更关心后端的业务逻辑等,因此简单能够在没有屏蔽代码妨碍的情况下设置值是所需要的。

于 2011-06-03T21:39:01.420 回答
1

问题与关注文本字段有关。即使使用 .click() ,如果输入字段(参见issue 2377 ) ,webdriver 也会以某种方式结束光标。按 HOME 键将光标移动到开头并允许您在输入字段中键入,并且仍然具有掩码功能。

在 Java 中:

WebElement txtPhone = getDriver().findElement(By.id("phoneNumbers_value_input"));
txtPhone.sendKeys(org.openqa.selenium.Keys.HOME);
txtPhone.sendKeys(phoneNumber);
于 2013-07-09T09:42:15.177 回答