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

Submitting a form with a javascript target using Python

本文关键字:目标 表单 javascript Python 提交 使用      更新时间:2023-09-26

背景

我有一个HTML表单,我正试图使用PythonRequests模块提交。

这是表单的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();的表格?

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

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