我正在尝试使用 PyQt 提交表单。我开始通过 Spynner 使用它,但我在我的 repl 中将其解构为原始的 PyQT 调用自己来尝试调试问题。
>>> obr.webframe.findAllElements('.qust input').toList()
[<PyQt4.QtWebKit.QWebElement object at 0xa343f7c>, <PyQt4.QtWebKit.QWebElement object at 0xa343fb4>]
>>>
>>> elem = obr.webframe.findAllElements('.qust input').toList()[1]
>>> elem.setFocus()
>>> elem.evaluateJavaScript("this.click()")
当这不起作用时,我从 Spynner 中调用点击事件的方法中提取了这个片段,这也不起作用:
>>> jscode =
"var e = document.createEvent('MouseEvents');e.initEvent( 'click', true, true );this.dispatchEvent(e);"
>>>
>>> elem.evaluateJavaScript(jscode)
最后:
>>> obr.webframe.findFirstElement('form')
<PyQt4.QtWebKit.QWebElement object at 0xa34387c>
>>> obr.webframe.findFirstElement('form').evaluateJavaScript('this.submit();')
<PyQt4.QtCore.QVariant object at 0xa343f44>
>>>
在所有情况下,它都会立即返回。不发布表格。形式正常:
>>> obr.webframe.findFirstElement('form').attribute('action')
PyQt4.QtCore.QString(u'SubmitPage.aspx?g=d7a717c38&ust=72a0fc7b&nm=01f00&se=53')
>>> obr.webframe.findFirstElement('form').attribute('method')
PyQt4.QtCore.QString(u'post')
如果有人有任何想法或建议,我将不胜感激。正如你所看到的,我一直在这里抓住稻草。不是我喜欢的调试风格...