我正在尝试使用Python的mechanize模块来提交HTML POST表单请求。为此,我必须从< select>中选择一个选项。元素,但选项是由Javascript动态加载的。
因为我知道< select>我想使用的选项,我尝试使用not-yet-loaded选项值构造表单请求,执行如下操作:
browser.find_control(name="formName", kind="list").value = ["optionValue"]
但是,mechanize会引发ItemNotFoundError,因为它认为该值无效。另外,我尝试附加到listvalue,我想要的选项值,然后设置它,但这也不起作用。知道如何解决这个问题并将控件设置为Javascript加载值吗?
答案 0 :(得分:0)
也许您已经这样做了,但是当您尝试将该选项附加到<select>
列表时,请使用javascript而不是{{1}中更繁琐的document.createElement
,parentNode.appendChild
方法},jQuery innerHMTL=...
或jQuery html(..)
,它们并不总是完全正常工作(例如在您的情况下)。
动态加载选项还可以将标记(例如csrf)插入到表单中的隐藏字段中,该字段必须包含在帖子中。在这种情况下,您必须在创建帖子之前触发或等待加载选项。