使用Python提交带有javascript目标的表单

时间:2014-05-08 13:34:32

标签: javascript python html forms

背景

我有一个HTML表单,我试图使用Python 请求模块提交。

这是表单的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);
        }
      }

这是验证()

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 个答案:

答案 0 :(得分:2)

onSubmit处理程序不应与表单的action混淆(即数据将发布到的URL)。您应该看到onSubmit作为用户提交表单后立即激活的触发器。如果处理程序的返回值为false,则表单数据根本不会发送到服务器。

要使用requests执行相同操作,您需要确定表单的action属性是什么。如果表单没有action属性,它会将数据发布到与首先获取表单的URL相同的位置。