我们正在使用大量 JS 代码测试一个相当复杂的接口。我们使用 PyQT(及其 webkit)。我们模拟这样的点击事件:
evaluateJavaScript("var evObj = document.createEvent('MouseEvents'); vObj.initEvent('click', true, true); this.dispatchEvent(evObj);")
我们填写表格:
evaluateJavaScript('this.value = "%s"' % value)
有时(不幸的是,很多时候)这两种技巧都失败了,有时一个,有时另一个。我们无法真正理解其中的原因,看起来很混乱,很随意。看起来这些事件有时不会执行。但以下事件可能执行得很好。所以看起来 PyQT 只是“丢弃”了一些事件,错过了它们。这真的很烦人,我们根本无法进行测试。有人知道是什么原因吗?或者至少,如何执行事件并确保它真的被执行了?设置值 attr 没什么大不了的,我们可以简单地检查它是否有值,但是如何跟踪“点击”是否成功?
PS 我们不使用 PhantomJS,也不会使用它,因为它缺乏 Flash 支持,取回它并重写我们的测试将花费太多时间。
感谢你们!