[英]AJAX trigger autocomplete results with Cucumber/Capybara/Selenium
運行測試時,除非物理上單擊搜索輸入字段,否則無法顯示自動完成下拉菜單。
這是使用Selenium Webdriver進行的Cucumber測試,結果來自Crafty Clicks Address Autocomplete API。
我從其他幾個帖子/源中嘗試了相同解決方案的多個版本,所有這些看起來都像這樣:
def fill_in_autocomplete(selector, value)
page.execute_script("
window.onload = function() {
$('#{selector}').focus().val('#{value}').keydown();
}
")
end
fill_in_autocomplete "#address_lookup", with: "EC2A 1AF"
我還嘗試了更具體的基於keydown的解決方案,例如:
var e = jQuery.Event("keydown");
e.which = 50;
$("input").trigger(e);
我也暫停了測試,並在控制台中手動測試了每個解決方案,但仍然無法正常工作。
值得注意的是,我沒有使用jQuery UI,所以沒有任何.autocomplete()
解決方案相關。
在整個過程中,我也一直使用sleep
,以解決計時方面的任何問題。
我沒主意了!
事實證明,這是某些較新版本的Firefox的問題。 最初,我被建議降級FF,但我選擇改用chromedriver(我使用了chromedriver-helper gem),並且一切正常。
有趣的旁注是,我花了這么長時間才弄清楚這一點的原因之一是因為我試圖觸發Chrome控制台中輸入字段的焦點,以此來確定我需要在測試中使用哪些代碼。 問題在於,顯然,當您在Chrome中打開控制台時,您無法將注意力從控制台移開! 因此,無論我嘗試使用哪種方法來專注於控制台的輸入字段,都被焦點放在控制台本身這一事實所取代。 最后,我通過將焦點代碼放在click事件中並將其附加到頁面上的元素上來解決了這個問題。 然后,我關閉控制台,單擊該元素,並將焦點移到“自動完成”輸入字段。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.