我想使用MechanicalSoup填写的在线HTML表单有2个提交按钮(所以1个表单带有2个提交按钮)。第一个按钮(图片中的红色和#34; 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>
答案 0 :(得分:1)
提交文件时,文件上传是表单提交的一部分。在提交之前没有必要等待,因为这不是文件上传发生的时候。除非网站被严重破坏,否则没有必要等待,因为.sumbit()
方法调用是阻塞的,即它仅在表单提交后返回,因此文件上传完成。
然而,在你的情况下很难说你应该做些什么:似乎第一次提交是在没有重新加载页面的情况下完成的,因此使用了JavaScript。 MechanicalSoup不执行JavaScript,因此可能会或可能不会工作(在完美的世界中,通过JavaScript工作的网站具有非JavaScript后备,但是......)。
对你来说最好的方法就是试着看看它有用。