我正在使用WatiN來測試自動完成下拉列表。使用WatiN進行自動完成DropDown菜單測試
當用戶在輸入3個字符後輸入字段時,會觸發jquery自動完成,並顯示一個無序列表。用戶從列表中選擇是強制性的。
我無法使用WatiN從列表中選擇/觸發自動完成功能。
下面是一些開發商已使用的HTML:
<ul class="ui-autocomplete ui-menu ui-widget ui-widget-content ui-corner-all" role="listbox" aria-activedescendant="ui-active-menuitem" style="z-index: 1; display: block; width: 275px; top: 301px; left: 262px; ">
<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1">ABC DEFGHIJ </a></li>
<li class="ui-menu-item" role="menuitem"><a class="ui-corner-all" tabindex="-1">ABC KLMNOPQ </a></li>
</ul>
他們正在使用jQuery UI自動完成構件:http://jqueryui.com/demos/autocomplete/
谷歌搜索的jQuery UI自動完成測試,我發現這個堆棧溢出Q & - 答: Testing JQuery autocomplete ui with cucumber
包含什麼似乎是至關重要的信息:「你需要先觸發鼠標懸停,然後點擊」
然後,我用Google搜索華廷鼠標懸停時,發現http://blogs.telerik.com/testing/posts/08-05-29/how_to_select_radcombobox_item_with_watin.aspx 這有一點點的代碼示例包括:
Div divStudent3 = ie.Div(Find.ById("idRadComboBox_c2"));
divStudent3.FireEvent("onmouseover");
divStudent3.Click();
(要明確我們的發展的代碼不使用Telerik控制這只是一個例子)
在這一點上我覺得我有多麼此驅動器的計劃:
- 所需的值類型部分進入該領域(如「ABC」)
- 找到與類「UI-自動完成」和顯示形式「塊」一個
<ul>
元件,等待,直到它是本 - 在這一
<ul>
元件,查找<li>
元件其文本爲所希望的值(例如「ABC DEFGHIJ」) - 在該
<li>
元素上觸發「onmouseover」事件 - 單擊
<li>
元素。
我發現了兩個問題:首先,華廷的打字到輸入字段是在觸發自動完成菜單, 的外觀非常糟糕,其次是點擊菜單項沒有導致發生自動完成。
我發現向輸入字段發送一個向下箭頭鍵事件會鼓勵菜單出現,但並不會導致頂層菜單項突出顯示 (而如果您手動鍵入並按下箭頭則會發生)。正確啓用菜單項 (包括將其ID設置爲ui-active-menuitem)可能是此處缺失的鏈接。
任何人都可以幫助我理解和解決我提到的兩個問題嗎?
這解決了這個問題。謝謝。它不會顯示列表上的項目的亮點,因爲它選擇它(我會進一步看看這個),但它確實選擇了該項目:) – ghb82
除了這個,這裏還有更多的信息:http:///forum.jquery.com/topic/functional-testing-autocomplete-widget-with-watin-watir。還發現,如果你在TextField上通過jquery進行模糊處理,它也可以工作(雖然它不會實際顯示列表,但這可能不是我們所需要的) – Mark
幫助解決了我的問題。謝謝 – AceMark