Ruby on rails Cucumber-Capybara-Jquery-Dropdown值不调用OnChange

Ruby on rails Cucumber-Capybara-Jquery-Dropdown值不调用OnChange,ruby-on-rails,cucumber,capybara,poltergeist,Ruby On Rails,Cucumber,Capybara,Poltergeist,我正在使用capybara 2.4.4、cucumber 1.3.19和cucumber rails 1.4.2为rails 4应用程序编写测试用例。 应用程序有一个下拉框,onchange调用jquery函数。我放了一个调试语句 save_and_open_screenshot 这表明选择框中的文本已被选中,但未触发onchange事件 $("#engagement_list").on("change", function () {} 在下拉列表中选择文本后,我将 find('#engag

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

save_and_open_screenshot
这表明选择框中的文本已被选中,但未触发onchange事件

$("#engagement_list").on("change", function () {}
在下拉列表中选择文本后,我将

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

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

请尝试正确选择该选项。假设选项[0]是选择一条消息,下面是一些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

选择应触发事件。

通过水豚,您可以触发如下更改事件:

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')")

你用的是什么版本的恶鬼?另外,水豚2.4.4现在已经很旧了,您可能需要更新到新版本。如何在下拉列表中选择文本?另一件要尝试的事情是,单击页面上的另一个元素,看看这是否会触发更改事件。我尝试在页面上选择其他元素,但没有触发更改事件。我注意到的一件事是,我们正在模拟上运行测试用例,在那里它不会触发更改事件。我尝试在服务器中部署的应用程序上运行类似的cucumber-capybara测试。成功了。不知道模拟版本的代码出了什么问题。如果您已经找到option元素,您可以对其调用select_option-因此在您的示例中,find:xpath,third_option_xpath.select_option-不需要返回并调用select,它只会在您的文档中进行另一次查找,浪费时间,并最终调用选择选项。我正在按页面选择选项。选择'8832483 |高飞应用程序1 | IMAP-12341',:from=>'engagement_list'