机械化找不到表格

时间:2018-11-18 22:41:16

标签: ruby capybara mechanize

在访问我正在使用Mechanize.的页面上的表单元素时遇到一些问题

username_page = agent.get 'https://member.carefirst.com/mos/#/home'
username_form = username_page.form_with(name: 'soloLoginForm')

username_formnil。 (username_page确实有页面)。该页面肯定具有表单,并且字段是#soloLoginForm,但是username_page.body没有表单元素。

我猜这是异步或动态问题。我可以使用poltergeist来抓取表单,并且正在考虑用水豚/ poltergeist来填写所有表单,但是我想知道是否缺少一些简单的东西可以让我使用机械化功能,如我所愿计划的。

2 个答案:

答案 0 :(得分:1)

似乎'https://member.carefirst.com/mos/#/home'使用Angular来呈现页面元素,而AngularJS需要浏览器中的Javascript支持,或者在您的情况下Capybara需要具有Javascript支持的驱动程序。

机械化不支持Javascript,请检查此旧的SO thread。这可能是您尝试使用poltergeist时起作用的原因。

检查:https://github.com/teamcapybara/capybara#drivers

答案 1 :(得分:0)

如@hernanvicente的回答所述,该页面使用Angular,并且需要JS(机械化不支持)。但是,您现在真的想在无头的Chrome中使用硒,而不是现在的Poltergeist。 Poltergeist相当于大约7年的Safari版本(由于PhantomJS用于渲染,已被废弃),因此它不支持现代站点中使用的许多JS和CSS。将Selenium与Chrome结合使用的另一个优势是,您可以轻松地在无头和前头之间进行切换,以查看需要调试的内容。