【问题标题】:AJAX trigger autocomplete results with Cucumber/Capybara/SeleniumAJAX 使用 Cucumber/Capybara/Selenium 触发自动完成结果
【发布时间】:2017-06-13 00:36:50
【问题描述】:

当我运行测试时,除非我实际点击搜索输入字段,否则无法显示自动完成下拉菜单。

这是使用 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,以解决与时间相关的任何问题。

我没有想法!

【问题讨论】:

    标签: javascript ruby-on-rails ajax selenium cucumber


    【解决方案1】:

    原来这是一些较新版本的 Firefox 的问题。起初我被建议降级 FF,但我选择改用 chromedriver(我使用了chromedriver-helper gem),一切都运行良好。

    有趣的附注,我花了这么长时间才弄清楚这一点的原因之一是因为我试图触发 Chrome 控制台中输入字段的焦点,以此来确定我需要使用什么代码在我的测试中。问题在于,显然当您在 Chrome 中打开控制台时,您无法将注意力从控制台上移开!因此,无论我试图用什么方法来关注控制台的输入字段,都被焦点在控制台本身的事实所覆盖。最后,我通过将焦点代码放在单击事件中并将其附加到页面上的元素来解决它。然后我关闭控制台,单击元素并将焦点转移到自动完成输入字段。

    【讨论】:

      猜你喜欢
      • 2021-06-16
      • 2018-07-24
      • 1970-01-01
      • 2012-10-02
      • 2012-07-31
      • 2012-03-31
      • 2014-04-10
      • 1970-01-01
      • 2018-06-06
      相关资源
      最近更新 更多