【发布时间】:2017-07-10 21:08:28
【问题描述】:
当我在 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 文件、脚本执行相同操作时,它会失败。
编辑:为什么我说它失败了,我的意思是表单没有提交,因此页面不会重定向。
有人知道为什么吗?
谢谢
大卫
【问题讨论】:
-
它是如何失败的? (你得到什么错误,等等)
-
@ThomasWalpole,我已经编辑了帖子。
-
但是你怎么知道它没有提交——你一定是在某个地方出错了?在您显示的代码显示存在错误之后,您正在运行什么代码?另外,在 PRY 控制台中运行它的代码是什么?您确实需要提供足够的信息,以便我们可以看到可能导致错误的原因。
-
@ThomasWalpole 我使用 s.html 来检查 html 是否有变化。我现在进行了一些测试,甚至彻底的 s.html 看起来都一样,当我使用命令 s.find("#id") 时,我得到了预期的结果。无论如何,在“pry”上,s.html 正在显示更新的 html。我是 ESL,对不起。
-
您不能只在
trigger('click')之后立即使用s.html,因为该页面实际上尚未加载。如果您在触发器后放置sleep(3),然后查看 s.html,它可能是正确的。您的s.find("#id")会自动等待Capybara.default_max_wait_time秒以使元素出现,因此它给了页面加载时间
标签: ruby console capybara poltergeist