【问题标题】:Cucumber - Capybara - Jquery -Dropdown value does not call OnChangeCucumber - Capybara - Jquery -Dropdown 值不调用 OnChange
【发布时间】:2016-05-10 18:57:08
【问题描述】:

我正在为 rails 4 应用程序使用 capybara (2.4.4)、cucumber (1.3.19)、cucumber-rails (1.4.2) 编写测试用例。 该应用程序有一个下拉框,onchange 调用 jquery 函数。我放了一个调试语句

save_and_open_screenshot

这表明选择框中的文本被选中但它没有触发onchange事件

$("#engagement_list").on("change", function () {}

在下拉列表中选择文本后,我放了

find('#engagement_list').native.send_keys(:return)

但它没有调用 onchange 函数。在我的黄瓜功能文件中,我使用 @javascript 标签。你知道可能出了什么问题吗?

【问题讨论】:

  • 您使用的是哪个版本的 poltergeist? Capybara 2.4.4 现在也很老了,你可能想更新到更新的版本。您如何选择下拉菜单中的文本?要尝试的另一件事是单击页面上的不同元素,看看是否会触发更改事件
  • 我尝试选择页面上的其他元素但未触发更改事件。我注意到的一件事是,我们在没有触发更改事件的模拟上运行测试用例。我尝试在服务器中部署的应用程序上运行类似的 cucumber -capybara 测试。有效。不知道模拟版本的代码出了什么问题。

标签: ruby-on-rails cucumber capybara poltergeist


【解决方案1】:

通过水豚,您可以触发 change 事件,如下所示:

select my_value, from: "My select Label" # select in order after submitting a form to send it to my server
page.execute_script("$('#engagement_list').trigger('change')")

Capybara prof

【讨论】:

    【解决方案2】:

    尝试正确选择选项。假设 option[0] 是“Select One”消息,这里是一些 RSpec:

    def select_third_option(id)
      third_option_xpath = "//*[@id='#{id}']/option[3]"
      third_option = find(:xpath, third_option_xpath).text
      select(third_option, :from => id)
    end
    

    选择应该触发onchange 事件。

    【讨论】:

    • 如果您已经找到了选项元素,您可以在其上调用#select_option - 所以在您的示例中find(:xpath, third_option_xpath).select_option - 无需返回并调用#select 就可以了在您的文档中找到另一个,浪费时间,最终还是调用了 select_option
    • 我通过 page.select '8832483 | 选择选项高飞应用 1 | IMAP-12341', :from => 'engagement_list'
    猜你喜欢
    • 2013-08-12
    • 2017-04-06
    • 1970-01-01
    • 2019-01-02
    • 2011-07-05
    • 1970-01-01
    • 2012-11-01
    • 2018-06-06
    • 1970-01-01
    相关资源
    最近更新 更多