繁体   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