簡體   English   中英

AJAX使用黃瓜/水豚/硒觸發自動完成結果

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM