2011-06-02 59 views
0

使用watir-webdriver,我试图设置文本字段的值。设置一个文本字段上有一个JQuery掩码

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

当我运行该命令,我可以看到的Watir发现场,因为光标被设置在该字段但没有输入文字。我也尝试了send_keys和追加命令,但似乎没有任何工作。这些方法不会引发异常。

我可以找到这个领域和页面上的其他领域(这一切工作正常)之间唯一的区别是它有这个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> 
+0

请提供相关的HTML或页面(或类似的一个)的链接。 – 2011-06-03 07:33:18

+0

@Željkohttp://digitalbush.com/projects/masked-input-plugin/#demo(虽然这不是我的网站) – juan2raid 2011-06-03 16:19:50

+0

@ juan2raid,我相信@Z是要求''到您的网页,而不是插件网站:) ps我在很多项目中使用这个插件... – pixelbobby 2011-06-03 16:44:08

回答

1

我没有看到你所提供的HTML的任何元素将匹配您发布顶部的ruby代码中正在寻址的文本输入字段。例如有基于你的问题的HTML“电话”

的ID什么都没有,我希望下面的工作

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

看着你的评论链接的示例页面,当我在ID为'phone'的输入字段中使用谷歌浏览器和“Inspect Element”函数我发现有多个与该字段相关的事件侦听器(模糊,焦点,输入,keydown,按键,解除掩码)

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

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

编辑:在这种情况下,基于来自提问者的反馈,答案证明他们需要先对文本字段启动'unmask'事件,然后按照顺序设置他们想要的值让事情在自动化测试时正常工作。这并没有实现字段屏蔽功能,但是我再次怀疑在这个实例中的测试任务是广泛测试第三方(JQuery)插件,并且他们更关心后端的业务逻辑等,因此简单能够在没有掩码的情况下设置该值是需要的。

+0

为简洁起见,我简化了第一行的变量名称。在我做了包含HTML的编辑之后,我忘了更改id值以匹配HTML。我的代码包含正确的id值。 – juan2raid 2011-06-03 21:59:19

+0

+1这个答案让我找到了正确的解决方案。发射“聚焦”事件没有效果,但“揭密”使其发挥作用。然而,掩码不会显示字段的值将被设置。 browser.text_field(:id,“phoneNumbers_value_input”)。fire_event(“unmask”) – juan2raid 2011-06-03 22:06:58

+0

那么问题就解决了? – 2011-06-04 12:09:10

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);