在访问我正在使用Mechanize.
的页面上的表单元素时遇到一些问题
username_page = agent.get 'https://member.carefirst.com/mos/#/home'
username_form = username_page.form_with(name: 'soloLoginForm')
username_form
是nil
。 (username_page
确实有页面)。该页面肯定具有表单,并且字段是#soloLoginForm,但是username_page.body
没有表单元素。
我猜这是异步或动态问题。我可以使用poltergeist来抓取表单,并且正在考虑用水豚/ poltergeist来填写所有表单,但是我想知道是否缺少一些简单的东西可以让我使用机械化功能,如我所愿计划的。
答案 0 :(得分:1)
似乎'https://member.carefirst.com/mos/#/home'使用Angular来呈现页面元素,而AngularJS需要浏览器中的Javascript支持,或者在您的情况下Capybara需要具有Javascript支持的驱动程序。
机械化不支持Javascript,请检查此旧的SO thread。这可能是您尝试使用poltergeist时起作用的原因。
答案 1 :(得分:0)
如@hernanvicente的回答所述,该页面使用Angular,并且需要JS(机械化不支持)。但是,您现在真的想在无头的Chrome中使用硒,而不是现在的Poltergeist。 Poltergeist相当于大约7年的Safari版本(由于PhantomJS用于渲染,已被废弃),因此它不支持现代站点中使用的许多JS和CSS。将Selenium与Chrome结合使用的另一个优势是,您可以轻松地在无头和前头之间进行切换,以查看需要调试的内容。