请注意,我认为这不能FF 4.x
轻易完成。这是由于这些版本的“功能”。我给你的建议是如果可以的话,使用一些不同的浏览器,比如Opera。我自己还没有测试它,但我认为它没有 FF 注意到的所有这些缺陷。见下文。
在您的情况下,以下解决方案可能是有效的:
编写一些 Greasemonkey 脚本,在屏幕某处添加一个绝对定位的矩形。
页面加载完成后,让这个矩形以 3 个周期闪烁:红色、蓝色、透明
编写一个脚本,等待至少 2 个这样的周期完成(所以它会看到红色、蓝色、某些东西、红色、蓝色),然后在透明阶段以正确的时间进行屏幕截图。
这对于 X11 和 VNC 和类似的应该是可行的。抱歉,我没有更好的解决方案,也没有可以在这里展示的代码。
就我而言,我会用EasyRFB
我写的来解决类似的事情来解决它。但是,我不能向您推荐,除非您是非常绝望的天才,能够轻松阅读和理解可怕的无证代码片段;)
顺便说一句,感谢您注意到能够截取任意网页的软件包的想法,这为EasyRFB
. 我自己以前从来没有想过这个。
查看 GitHub,我注意到有一些基于Selenium 或 WebKit 的网络截图解决方案。这些对于宣传照片当然有好处,但它们显然无法涵盖用户如何查看网页的一般用例。
也许能够从 Windows 95 IE 4、FF 1 或带有 Chimera 的 Debian Potato 等看到的任意页面自动截图会很有趣。我会看看这个;)
请注意,我在Stackoverflow上发表了另一篇文章。
有一些我称之为EasyRFB
(Python
核心)、PHP
(小型网络助手)AJAX
和bash
(控制脚本)的东西。它已经过测试,XVnc
但适用于任何VNC
. 它以某种方式能够做你想做的事,但要注意,它是开发代码,没有文档,复杂且写得可怕,并且可能有问题。你可以在那里找到它:
它是为以下目的而编写的:
- 即使在互联网连接极慢且极不可靠的情况下,也能够从移动设备控制远程 GUI
- 完整的 UI 自动化/通过命令行替换鼠标
- 自动化 QA 测试,基于用户看到的与浏览器或某些 Windows 间谍程序看到的对比,在输出不需要像素颜色完美的情况下
它的编写目的不是快速、高效、易于使用,也不是为了其他人(目前)。它以某种方式对我来说有效。
它能做什么:
- 以 Web 为中心,并以某种方式为服务器提供
AJAX
Web 前端。VNC
- 保持高度压缩
.jpg
更新到屏幕的内容。
- 可以无损截图
- 能够将模板与屏幕内容进行模糊匹配
- 模板可以用 Web 编辑
edit.html
- 但是这个编辑器是基本的,不是不言自明的,根本没有记录
- 可以编写 Shell 脚本,等待这些模板匹配并发送诸如按键、鼠标移动和点击等命令到
VNC
- 有一些
.sh
脚本可以帮助理解这是如何完成的,但我还不能发布真正有用的东西,抱歉
没有任何记录,我无法解释如何使用它。要么你发现自己,要么你迷路了。对不起。最好不要看它,它可能会伤害你。
现在来看看 FF 在执行所有这些操作时发现的问题:
较新的 FF 版本无法正确更新屏幕。在我身边正常工作的最后一个版本是FF 3.6
系列,后来有时会出现一些奇怪的行为。
例如:
- 较新的版本现在会在更新屏幕内容之前更新状态。
- 此外,它们对 CPU 和内存的需求如此之高,以至于完成更新屏幕的最后一步可能需要一些时间。在慢速硬件(如NSLU2,从未测试过)上,我认为在 Spinners 等已经处于“完成”状态之后甚至可能需要几分钟。
因此,即使看着微调器变成灰色,包括(!)通知“onload()”的天真的 Greasemonkey 解决方案都失败了FF 4.x
,因为当您检测到它已准备好时,屏幕的某些部分可能仍未更新。
也许它只与XVnc
,也许我的脚本中有一个错误触发了这一切,但FF 3.x
一切都是正确的,我认为,恢复到旧版本会立即解决所有这些问题。(但我已经为所有这些麻烦准备了解决方法。但我不能发布那些脚本,抱歉。)
它变得更糟。
FF 4.x
及以上显然会延迟事件处理。所以将鼠标跳出滚动条通常会使其突出显示,我认为事件不会到达滚动条。
在普通桌面上,您不会跳鼠标,但我的解决方案能够做到这一点。解决方法是生成额外的、多余的鼠标移动事件,让 FF 做正确的事情。
我还注意到,我真的不知道是因为 FF 还是 FF 中显示的网页,有时事情并没有出现在他们应该在的地方。不过,我以前从未观察过这一点FF 3.x
。解决这个问题的技巧是重新加载页面。它可能与增量屏幕更新有关,但我还没有深入研究这个,因为重试(自动单击重新加载按钮)对我有用。