设置一个包含JQuery掩码的文本字段

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

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

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

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

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

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

编辑:

一些更多的Javascript:

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

该字段的HTML:

 
 

我没有看到您提供的HTML中的任何元素与您在发布顶部的ruby代码中处理的文本输入字段相匹配。 例如,那里没有任何ID为’phone’的ID

基于您问题中的HTML,我希望以下内容能够正常运行

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

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

“焦点”特别引起了我的注意,在那个领域看到它让我觉得你可能需要首先针对相同的元素发起一个事件,比如onfocus事件,以激活该字段,然后尝试设置值。

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

编辑:在这种情况下,根据提问者的反馈,答案结果是他们需要首先针对文本字段触发’unmask’事件,然后设置他们想要的值,以便让事情发挥作用在自动化测试时正确。 这不会运用字段屏蔽function,但我再次怀疑在这种情况下的测试任务是广泛测试第三方(JQuery)插件,他们更关心后端的业务逻辑等,因此只是能够在没有遮蔽代码的情况下设置值是需要的。

问题与关注文本字段有关。 即使使用.click(),如果输入字段(参见问题2377 ),webdriver最终会以光标结束。 按HOME键可将光标移动到开头,并允许您键入输入字段,并仍具有屏蔽function。

在Java中:

 WebElement txtPhone = getDriver().findElement(By.id("phoneNumbers_value_input")); txtPhone.sendKeys(org.openqa.selenium.Keys.HOME); txtPhone.sendKeys(phoneNumber);