小编Max*_*ony的帖子

等待延迟,然后使用PyQt捕获网站图像

我正在使用PyQt(作为Python初学者).我需要能够在无头系统上截取网站的屏幕截图.我之前使用的是PhantomJS用于另一个项目,但他们在1.5中删除了Flash支持,我不想依赖于我的新项目弃用的1.4版本.

所以我正在使用PyQt自己做我的东西.我可以用一个给定的网址截取一个网站的截图,没问题.

但我一直在Flash占位符上有"蓝色骰子"flash插件图标(是的,javascript和插件被激活)

self.settings.setAttribute(QtWebKit.QWebSettings.PluginsEnabled,True) 
self.settings.setAttribute(QtWebKit.QWebSettings.JavascriptEnabled,True) 
Run Code Online (Sandbox Code Playgroud)

我正在Youtube视频页面上进行一些测试,这是我的问题的一个例子:

图片

第二部分,可能与第一部分有关:如何告诉PyQt在拍摄截图之前等待几秒钟?正如您在示例中看到的那样,右侧的图像仍然被卸载,因为它们是使用javascript和data属性加载的,在我的脚本中,我在loadFinished信号(onLoad()等效的javascript)上截取屏幕截图.

我的第一个猜测就是

time.sleep(2) 
Run Code Online (Sandbox Code Playgroud)

在调用我的捕获方法之前,它不起作用.我假设在这个休眠时间内Webkit加载也处于睡眠状态,防止在页面上加载任何内容.

我试图创建一个自定义信号,但后来我仍然不知道如何在不睡觉的情况下触发它.

我的最后一个猜测是我需要线程化我的应用程序.我对吗?

如果您有任何提示/脚本来帮助我显示Flash内容和/或添加类似信号的setTimeout,我将非常感激!

在此先感谢您的帮助.

编辑: 只需快速编辑即可添加我的解决方案:

timeoutTimer = QTimer()
timeoutTimer.setInterval(3000) # wait for 3secs
timeoutTimer.setSingleShot(True)
timeoutTimer.timeout.connect(theMethodToCallOnTimeout)
Run Code Online (Sandbox Code Playgroud)

关于flash事物:看起来像OSX上的flash播放器坏了(可能与32/64位问题有关).

python flash macos qt pyqt

4
推荐指数
1
解决办法
5544
查看次数

标签 统计

flash ×1

macos ×1

pyqt ×1

python ×1

qt ×1