Обратите внимание, что я не думаю, что это может быть легко сделано с FF 4.x
и выше. Это связано с «особенностями» этих версий. Я рекомендую вам использовать другой браузер, если вы можете, например, Opera . Я еще не проверял это сам, но я думаю, что он не имеет всех тех недостатков, замеченных с FF. Смотри ниже.
В вашем случае может быть эффективным следующее решение:
Напишите некоторый скрипт Greasemonkey, который добавляет абсолютный позиционированный прямоугольник где-нибудь на экране.
Пусть этот прямоугольник вспыхнет за 3 цикла после завершения загрузки страницы: красный, синий, прозрачный
Напишите сценарий, который ожидает, по крайней мере, 2 таких цикла, чтобы завершить (чтобы он видел красный, синий, что-то, красный, синий), а затем сделайте снимок экрана с правильным временем в прозрачной фазе.
Это должно быть выполнимо с X11 и VNC и аналогичными. Извините, что у меня нет лучшего решения или кода, который я могу представить здесь.
Я, со своей стороны, решил бы это, используя EasyRFB
, который я написал для решения подобных вещей. Однако я не могу рекомендовать это вам, за исключением случаев, когда вы очень отчаянный Genius, способный легко читать и понимать ужасные недокументированные фрагменты кода;)
Кстати, спасибо, что обратили внимание на идею пакета, способного снимать скриншоты с произвольных веб-страниц, что делает отличный вариант использования для EasyRFB
. Никогда раньше не думал об этом сам.
Глядя на GitHub, я заметил, , что там есть некоторые решения для создания веб-скриншотов на основе Selenium или WebKit. Они, безусловно, хороши для рекламных снимков, но, по-видимому, они не могут охватить общий случай использования пользователями веб-страниц.
Возможно, было бы интересно иметь возможность автоматизировать скриншоты с произвольных страниц, как это видно в Windows 95 IE 4, FF 1 или Debian Potato с Chimera и т. Д. Я посмотрю на это;)
Обратите внимание, что есть еще одна публикация Stackoverflow от меня.
Есть кое-что, что я называю EasyRFB
, которое я написал в виде смеси Python
(ядро), PHP
(небольшие веб-помощники) AJAX
и bash
(управляющие сценарии). Он был протестирован с XVnc
, но должен работать с любым VNC
. Он каким-то образом может делать то, что вы хотите, но будьте осторожны, это код разработки, недокументированный, сложный и ужасно написанный и может быть ошибочным. Вы можете найти его там:
Написано для следующих целей:
- Возможность управлять удаленным графическим интерфейсом с мобильного телефона даже в ситуации, когда интернет-соединение крайне медленное и крайне ненадежное
- Полная автоматизация пользовательского интерфейса / замена мыши с помощью командной строки
- Автоматизированные тесты QA, основанные на том, что видит пользователь, в отличие от того, что видит браузер или какая-либо шпионская программа Windows, в случаях, когда выходные данные не обязательно должны быть также идеальными для пиксельного цвета
Он не был написан, чтобы быть быстрым, эффективным или легким в использовании, ни для других (пока). У меня как-то работает.
Что он делает:
- является веб-ориентированным и дает
AJAX
веб-интерфейс VNC
серверам, как угодно.
- поддерживает высокую степень сжатия
.jpg
, обновляя содержимое экрана.
- может делать снимки экрана без потерь
- способен нечетко сопоставлять шаблоны с содержимым экрана
- шаблоны могут быть отредактированы с помощью
edit.html
- однако этот редактор является базовым, не требующим пояснений и совсем не документированным
- Могут быть написаны сценарии оболочки, которые могут ожидать совпадения этих шаблонов и отправлять команды, такие как нажатия клавиш, перемещения мыши и щелчки, на
VNC
- Есть несколько
.sh
скриптов, которые могут помочь понять, как это делается, но я пока не могу опубликовать действительно полезные материалы, извините
Ничего не задокументировано, и я не могу объяснить, как его использовать. Либо вы узнаете себя, либо потерялись. Сожалею. Лучше даже не смотрите на это, это может повредить вам.
А теперь о проблемах, замеченных с FF при выполнении всего этого:
Более новые версии FF не могут корректно обновлять экран. Последняя известная версия, которая корректно работала на моей стороне, была серия FF 3.6
, все позже иногда развивалось странное поведение.
Например:
- Более новые версии теперь обновляют состояние до обновления содержимого экрана.
- Кроме того, они имеют такой высокий спрос на ЦП и память, что выполнение последнего шага по обновлению экрана может занять некоторое время. На медленном оборудовании (например, NSLU2 , никогда не тестировалось), я думаю, что это может занять даже минуты после того, как счетчики и т. Д. Уже находятся в «готовом» состоянии.
Таким образом, даже глядя на спиннер, чтобы стать серым, включая (!) Наивные решения Greasemonkey, которые уведомляют о «onload ()», оба сбоят с FF 4.x
и выше, потому что части экрана могут все еще не обновляться при обнаружении этого оно готово.
Возможно, это связано только с XVnc
, возможно, в моих скриптах есть ошибка, которая вызывает все это, но с FF 3.x
все было правильно, и я думаю, что возврат к старой версии немедленно решит все эти проблемы. видел. (Но у меня уже есть обходные пути для всех этих проблем. Но я не могу опубликовать эти сценарии, извините.)
Становится хуже.
FF 4.x
и выше, по-видимому, немного задерживают обработку события. Поэтому выпрыгивание мыши из полосы прокрутки часто держит ее выделенной, я думаю, что событие не достигает полосы прокрутки.
На обычном рабочем столе вы не прыгаете мышью, но мое решение способно это сделать. Исправление состоит в том, чтобы генерировать дополнительные, лишние события движения мыши, чтобы FF делал правильные вещи.
Также я заметил, что я действительно понятия не имею, происходит ли это из-за FF или веб-страниц, показанных в FF, что иногда вещи не попадают туда, где они должны быть. Я никогда не наблюдал этого раньше с FF 3.x
, хотя. Хитрость, которая решает эту проблему, заключается в перезагрузке страницы. Возможно, это связано с добавочными обновлениями экрана, но я еще не углублялся в это, поскольку повторная попытка (автоматическое нажатие на кнопку перезагрузки) работает для меня.