【发布时间】:2012-08-12 08:55:35
【问题描述】:
我正在尝试使用WWW::Mechanize 记录我所做的一切。将带有输入字段的 HTML 填充并保存到文件中非常重要。
我的代码:
$m->save_content($file); # Saves the page without any forms filled
$m->field('user_name', $user); #fills the form
# I need to save the html with the filled form
# $m->save_content($file_2); won't do it
# $m->dump_forms; shows that mechanize knows about the filled forms
$m->click('SUBMIT.x');
$m->save_content($file); # Too late, already in a different page
有什么想法吗?我已经看到它与 LWP::UserAgent 一起工作,但我无权访问代码。
我已经尝试了所有我能想到的方法,但没有任何东西可以用 $m->forms() 的值更新内容。
编辑:基本上我想要的是具有以下类型的功能:
$updated_content = merge($m->content, $m->dump_forms);
所以当我保存它时,我可以看到输入给表单的内容到 html 幻灯片中。
我不需要保存对象的当前状态或在会话关闭后恢复会话。
【问题讨论】:
-
重新编辑:您为什么要这样做?
-
@simbabque 例如,您查看 selenium 记录的会话,您可以看到用户填写的表格和内容。我需要使用 mechanize 的类似功能。
-
Mechanize 放入表单的数据(在提交之前)必须来自某个地方。更具体地说,它必须通过您的代码。你为什么不在你把它交给机械化之前/期间/之后保存它?你(你的程序)必须已经知道它,否则你不能把它交给 Mechanize。
-
我知道我要传递给 Mechanize 的数据是什么,但是如何在不进行与 Mechanize 相同的处理的情况下将其与 HTML 合并?实际上 mechanize 是使用 HTML::Form 来处理数据,但我需要使用 HTML::Treebuilder 直接处理 HTML。然后,如果我要使用它来修改我的 HTML,那么我不妨从中生成 POST 或 GET 请求,而根本不使用 Mechanize。我显然不想重新实现
$self->current_form->find_input('name')->check()之类的东西,所以我正在寻找更智能的解决方案。
标签: html forms perl www-mechanize