gpt4 book ai didi

Javascript 更改事件未在 cucumber 测试中触发

转载 作者:行者123 更新时间:2023-11-29 18:27:14 25 4
gpt4 key购买 nike

我有两个文本字段,日期和时间,它们都有一个“日期时间字段”类,还有一个隐藏字段日期时间。每当日期或时间更改时,我都尝试使用 javascript 将两者结合起来,并将其存储在日期时间隐藏字段中。这是 javascript(从 coffeescript 转换而来):

$('.date-time-field').change(function() {
var date, time;
date = $('#date').val();
time = $('#time').val();
return $('#start_time').val(date + " " + time);
});

我的 cucumber 测试有 @javascript 标签,所以它会在 Firefox 窗口中运行。只要我将焦点放在测试打开的 Firefox 窗口上,它就会通过,但是如果我将焦点移到另一个我打开的窗口,它就会失败,因为更改事件不会触发。我担心如果用户做了一些奇怪的事情,这会在生产中重现。

步骤定义是填表:

When /^I create a valid event$/ do
fill_in :name, :with => "Blackbeard's modest event for modest folk"
select Tier.first.number.to_s, :from => 'event_tier_id'
select Venue.first.name, :from => 'event_venue_id'
fill_in 'date', :with => "05/03/2012"
fill_in 'time', :with => " 08:45"
click_button 'Save'
end

我是否应该使用另一个事件,例如 blur,也许除了 change 之外,还是它对生产来说不是问题,我应该只在我的测试中调用 wait_for?

最佳答案

根据 this discussion ,当文本区域失去焦点时, capybara 的 fill_in 实际上不会触发 change 事件。另一方面,jQuery 延迟文本区域上的 change 事件直到元素失去焦点(参见 documentation )。

所以我猜测当您将焦点移动到另一个窗口时,fill_in 不会触发 change 事件,因为焦点是丢失 change 事件之后也不会触发。

但是,当焦点没有丢失时,在窗口仍然处于焦点中时单击保存按钮,并且(我猜)这确实成功了触发更改,设置隐藏的 datetime 字段。

这只是根据一些小知识的推测。在解决方案方面,在上面的 github 讨论中发布了一些想法,我建议看看那些。

希望对您有所帮助!

关于Javascript 更改事件未在 cucumber 测试中触发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11838473/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com