当我在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文件脚本上执行相同操作时,它会失败。
编辑:为什么我说失败,我的意思是表单未提交,因此页面不会重定向。
有人知道为什么吗?
由于
大卫
答案 0 :(得分:1)
当您致电s.find_button('button').trigger('click')
时,会发生鼠标点击并立即返回您的代码,而#34;浏览器"停止并开始请求下一页或点击触发的任何操作。因此,如果您立即致电s.html
,那么由于该网页在该时间点尚未实际加载,因此它不会正确。你可以sleep
几秒钟让页面加载,或者使用Capybara finders / matchers,它会自动等待(最多到Capybara.default_max_wait_time秒),直到相关元素出现(这意味着他们等待页面)载入)。它在pry
控制台中工作,因为您只是等待输入下一个命令的延迟。