机械化Javascript [英] Mechanize Javascript
本文介绍了机械化Javascript的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我尝试通过Mechanize提交表单,但是,我不确定如何添加某些Javascript完成的必要表单贵重物品.由于Mechanize还不支持Javascript,因此我尝试手动添加变量.
I try to submit a form by Mechanize, however, I am not sure how to add necessary form valuables which are done by some Javascript. Since Mechanize does not support Javascript yet, and so I try to add the variables manually.
表单来源:
<form name="aspnetForm" method="post" action="list.aspx" language="javascript" onkeypress="javascript:return WebForm_FireDefaultButton(event, '_ctl0_ContentPlaceHolder1_cmdSearch')" id="aspnetForm">
<input type="hidden" name="__EVENTTARGET" id="__EVENTTARGET" value="" />
<input type="hidden" name="__EVENTARGUMENT" id="__EVENTARGUMENT" value="" />
<input type="hidden" name="__LASTFOCUS" id="__LASTFOCUS" value="" />
<input type="hidden" name="__VIEWSTATE" id="__VIEWSTATE" value="/..." />
<script type="text/javascript">
<!--
var theForm = document.forms['aspnetForm'];
if (!theForm) {
theForm = document.aspnetForm;
}
function __doPostBack(eventTarget, eventArgument) {
if (!theForm.onsubmit || (theForm.onsubmit() != false)) {
theForm.__EVENTTARGET.value = eventTarget;
theForm.__EVENTARGUMENT.value = eventArgument;
theForm.submit();
}
}
// -->
</script>
<script language="javascript">
<!--
var _linkpostbackhit = 0;
function _linkedClicked(id, key, str, a, b) {
if (!b || !_linkpostbackhit) {
if (!a) {
__doPostBack(key, id);
_linkpostbackhit = 1;
} else {
if (window.confirm(str)) {
__doPostBack(key, id);
_linkpostbackhit = 1;
}
}
}
return void(0);
}
// -->
</script>
...
<a href="JavaScript:_linkedClicked('123456','_ctl0:ContentPlaceHolder1:Link', '',0,1);">123456</a>
...
</form>
我尝试添加2个变量:
page.forms.first['__EVENTTARGET'] = '_ctl0:ContentPlaceHolder1:Link'
page.forms.first['__EVENTARUGMENT'] = '123456'
并提交表格:
page.forms.first.click_button(page.forms.first.buttons.first)
仅返回的结果(重新)显示了当前链接列表,就好像我没有单击任何链接一样.
The result returned only (re)show the current list of links as if I have not clicked on any of the links.
任何帮助将不胜感激.谢谢!
Any help will be appreciated. Thanks!
推荐答案
使用mechanize-1.0.0可进行以下工作:
Using mechanize-1.0.0 the following works:
agent = Mechanize.new
page = agent.get('http://127.0.0.1/some.aspx')
form = page.form("aspnetForm")
form.add_field!('__EVENTARGUMENT', 'Page$2')
form.add_field!('__EVENTTARGET', 'ctl00$ContentPlaceHolder1$gvwSomeList')
page = agent.submit(form) # this gets page 2
这篇关于机械化Javascript的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文