0

我想使用 MechanicalSoup 填写的在线 HTML 表单有 2 个提交按钮(所以 1 个表单有 2 个提交按钮)。第一个按钮(图片“Toevoegen”中的红色)是选择文件后上传照片。在此处输入图像描述第二个按钮(未显示)提交完成的表单。我已经想出了如何使用 form.choose_submit() 函数来处理不同的按钮,所以这很好。

我现在的问题如下:

当我手动填写表格时,我注意到在选择文件并按下第一个(红色)按钮后,文件上传需要一些时间(1-2 秒)。当我现在使用机械汤填写表格时,在我(制作机械汤)填写其余部分之前,我是否必须包括这个时间(1-2 秒)才能上传照片(例如使用 time.sleep())表单并使用第二个提交按钮提交?或者表单会发现它必须先上传图片并在执行最终提交订单之前等待?所以这真的是一个时间问题,我必须协调两个按钮的正常运行......

我希望这个编辑能更清楚地说明问题。

感谢您的任何建议!

如果有帮助:这是我在第一个提交按钮的 HTML 表单中找到的:

<div id="edit-submitted-file_add-ajax-wrapper">
    <div class="form-item webform-component webform-component-file webform-component--file_add">
        <label for="edit-submitted-file_add-upload">Add File</label>
        <div class="form-managed-file">
            <input type="file" id="edit-submitted-file_add-upload" name="files[submitted_file_add]" size="22" class="form-file" />
            <input class="button form-submit" type="submit" id="edit-submitted-file_add-upload-button" name="submitted_file_add_upload_button" value="Toevoegen" />
            <input type="hidden" name="submitted[file_add][fid]" value="0" />
        </div>
    </div>
</div>
4

1 回答 1

1

提交文件时,文件上传是表单提交的一部分。在提交之前等待是没有意义的,因为这不是文件上传发生的时候。除非网站严重崩溃,否则等待也没有意义,因为.sumbit()方法调用是阻塞的,即只有在表单提交后才返回,因此文件上传完成。

但是,很难说出在您的情况下您应该做什么:似乎第一次提交是在没有重新加载页面的情况下完成的,因此使用了 JavaScript。MechanicalSoup 不使用 JavaScript,因此它可能工作也可能不工作(在完美的世界中,通过 JavaScript 工作的网站有一个非 JavaScript 后备,但是......)。

对你来说最好的可能是尝试看看什么有效。

于 2018-03-07T22:12:25.117 回答