水豚 button.click 适用于控制台,但不适用于脚本(Ruby;水豚;闹鬼)

Capybara button.click works on Console but not on a Script (Ruby; Capybara; Poltergeist)

当我在 PRY 控制台上执行此操作时:

require 'phantomjs'
require 'capybara/poltergeist'

Capybara.register_driver :poltergeist do |app|
    Capybara::Poltergeist::Driver.new(app, :phantomjs => Phantomjs.path)
end

s = Capybara::Session.new(:poltergeist)
s.visit('site')
s.fill_in('field', with: data)
s.find_button('button').trigger('click')

它按预期工作。

但是当我尝试对 ruby 文件、脚本执行相同操作时,它失败了。

编辑: 为什么我说它失败了,我的意思是表单没有提交,因此页面不会重定向。

有人知道为什么吗?

谢谢

大卫

当您调用 s.find_button('button').trigger('click') 时,会发生鼠标点击,它会立即 returns 您的代码,而 "browser" 会关闭并开始请求下一页或点击触发的任何操作。因此,如果您立即调用 s.html,那将是不正确的,因为该页面在那个时间点还没有真正加载。您可以 sleep 几秒钟让页面加载,或者使用 Capybara finders/matchers 它会自动等待(最多 Capybara.default_max_wait_time 秒)直到相关元素出现(这意味着它们等待页面加载)。它在 pry 控制台中工作,因为您只是在等待输入下一个命令的延迟。