Ruby 机械化找不到形式

Ruby 机械化找不到形式,ruby,capybara,mechanize,Ruby,Capybara,Mechanize,我在使用Mechanize访问页面上的表单元素时遇到问题 用户名形式为零。username\u页面没有该页面。页面肯定有一个表单,字段是sologinfo,但是username\u page.body没有表单元素 我猜这是一个异步或动态问题。我能用鬼怪抓取表格,我正在研究用水豚/鬼怪填表格,但我想知道我是否缺少一些简单的东西,可以让我使用机械化,正如我所计划的。似乎是用于呈现页面元素,AngularJS需要浏览器中的Javascript支持,或者在您的情况下,Capybara需要一个支持Java

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

用户名形式为零。username\u页面没有该页面。页面肯定有一个表单,字段是sologinfo,但是username\u page.body没有表单元素

我猜这是一个异步或动态问题。我能用鬼怪抓取表格,我正在研究用水豚/鬼怪填表格,但我想知道我是否缺少一些简单的东西,可以让我使用机械化,正如我所计划的。

似乎是用于呈现页面元素,AngularJS需要浏览器中的Javascript支持,或者在您的情况下,Capybara需要一个支持Javascript的驱动程序

Mechanize不支持Javascript,请检查此旧版本。这可能就是为什么当你尝试使用恶鬼时它会起作用的原因


检查:

如@hernanvicente在回答中所述,该页面使用的是Angular,需要JS,而mechanize不支持JS。然而,现在你真的想用硒来搭配无头铬,而不是恶作剧。Poltergeist相当于7年前的Safari版本,因为它用于渲染的PhantomJS被放弃了,所以它不支持现代站点中使用的大量JS和CSS。将Selenium与Chrome结合使用的另一个优点是,您可以轻松地在headless和headed之间切换,以便在需要调试时查看发生了什么。

有一个简单的方法,只需使用Mechanizepost将表单数据发布到该url即可。查看chrome网络标签,看看请求是什么样子的。是的,我没意识到你可以用Capy自己填写表单。谢谢
username_page = agent.get 'https://member.carefirst.com/mos/#/home'
username_form = username_page.form_with(name: 'soloLoginForm')