使用Python提交带有JavaScript目标的表单
背景
我有一个HTML表单,想用Python的Requests模块来提交。
这是表单的HTML代码:
<form name="main" id="main" method="post" onSubmit="return validateForm(this);">
涉及的Javascript文件
validateForm()函数是这样的:
function validateForm(form)
{
if (form.buttonClicked[0].value == "delete"){
deleteCount += 1;
if (deleteCount > 1){
return false;
}
if(form.allowValidateOnDelete && form.allowValidateOnDelete.value == "true")
{
deleteCount = 0;
return validate(form);
}
else
{
return true;
}
}
else{
return validate(form);
}
}
这是validate()
function trimAll(form)
{
form.forwardedToNumber.value = trim(form.forwardedToNumber.value);
}
function validate(form)
{
trimAll(form);
for (var i=0; i < form.active.length; i++) {
if (form.active[i].checked) {
if (form.active[i].value == "false") {
return true;
}
}
}
if (form.forwardedToNumber.value == "") {
alert(errorText(1000, errorText(2201)));
form.forwardedToNumber.select();
return false;
}
return true;
}
问题
我该如何用Python提交这个表单呢?
我不能直接提交下面的例子,因为它作为一个URI没有意义:
session.request(
'POST',
'https://example.com/return validateForm(this);',
data={'active': 'true'}
)
我该如何提交一个目标是return function();
的表单呢?
1 个回答
3
不要把 onSubmit
处理程序和表单的 action
混淆了。简单来说,action
是指数据要发送到的地址(也就是网址)。而 onSubmit
就像一个开关,一旦用户提交表单,它就会被激活。如果这个处理程序返回 false,表单的数据就根本不会发送到服务器。
如果你想用 requests
来做到这一点,你需要先弄清楚表单的 action
属性是什么。如果表单没有 action
属性,那么它会把数据发送到获取表单的那个网址。