2011-06-02 56 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);