机械化找不到表格

Mechanize can't find form

我在访问我正在使用的页面上的表单元素时遇到一些问题 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 获取表格,我正在研究用 capybara/poltergeist 填写我的所有表格,但我想知道是否有一些简单的东西让我可以使用机械化,因为我计划好了。

似乎'https://member.carefirst.com/mos/#/home' uses Angular 来呈现页面的元素,AngularJS 需要浏览器中的 Javascript 支持,或者在你的情况下,水豚需要一个带有 [=20 的驱动程序=]支持

Mechanize 不支持 Javascript,请检查旧的 SO thread。这可能就是当您尝试使用 poltergeist 时它起作用的原因。

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

正如@hernanvicente 的回答所述,该页面正在使用 Angular 并且需要 JS(机械化不支持)。但是,现在您真的很想将 selenium 与 headless Chrome 一起使用,而不是 Poltergeist。 Poltergeist 相当于大约 7 年前的 Safari 版本(由于它用于渲染的 PhantomJS 已被废弃),因此它不支持现代站点中使用的大量 JS 和 CSS。将 Selenium 与 Chrome 一起使用的另一个优点是,您可以轻松地在无头和有头之间切换,以查看在需要调试时发生了什么。