Найти в Дзене

EdgeBrowser в Delphi, и чем он может быть полезен.

Собственно, что такое EdgeBrowser так или иначе знают все. Логично, что и Delphi содержит необходимый визуальный компонент, для работы с ним (пусть и с некоторыми нюансами, в отличие от привычного "старичкам" TWebBrowser), но... Итак, предыстория. Возникла у компании необходимость проверки оборудования, а именно IP-камер, на предмет соответствия их характеристик и возможностей. Получается, что надо взять выборку из партии, дать обученным людям и пусть проверяют. Так? Ну в малых масштабах так и делается. А тут... Тем более, про проверка осуществляется в рамках работы Департамента качества, а туда на каждый вид закупаемых вещей специалистов не посадишь... Вывод - надо автоматизировать этот процесс. На самом деле в сути своей задача не такая сложная. Крупные производители IP-камер помимо классического веб-интерфейса предоставляют еще и интерфейсы для программной работы с камерой. Чаще всего так же через веб, на основе CGI/ISAPI. Читаем, разбираемся, вдохновляемся, делаем и... Оп! А все

Собственно, что такое EdgeBrowser так или иначе знают все. Логично, что и Delphi содержит необходимый визуальный компонент, для работы с ним (пусть и с некоторыми нюансами, в отличие от привычного "старичкам" TWebBrowser), но...

Итак, предыстория. Возникла у компании необходимость проверки оборудования, а именно IP-камер, на предмет соответствия их характеристик и возможностей. Получается, что надо взять выборку из партии, дать обученным людям и пусть проверяют. Так? Ну в малых масштабах так и делается. А тут... Тем более, про проверка осуществляется в рамках работы Департамента качества, а туда на каждый вид закупаемых вещей специалистов не посадишь... Вывод - надо автоматизировать этот процесс.

На самом деле в сути своей задача не такая сложная. Крупные производители IP-камер помимо классического веб-интерфейса предоставляют еще и интерфейсы для программной работы с камерой. Чаще всего так же через веб, на основе CGI/ISAPI. Читаем, разбираемся, вдохновляемся, делаем и... Оп! А все это дело работает с BasicHTTP или Digest аутентификацией пользователя!!! А камера "из коробки" никакого пользователя не имеет! То есть надо автоматизировать процедуру его создания. Причем, никаких инструментов, кроме упомянутого веб-интерфейса у нас нет!

Скрин процедуры создания пароля пользователя на камерах от Dahua
Скрин процедуры создания пароля пользователя на камерах от Dahua

Следует отметить, что помимо создания пользователя/пароля, нам последовательно нужно еще и выбрать страну, язык. ну и т.д.

И тут нам на помощь приходит компонент TEdgeBrowser. А именно его процедуру ExecuteScript. Далее буду сразу на примерах...

Вся прелесть состоит в том, что помимо исполнения непосредственно скрипта, данная процедура по окончании еще и генерирует советующее событие...

Код процедуры ExecuteScript
Код процедуры ExecuteScript

Т.д. мы имеем какой-никакой контроль за происходящим.

Реализация контроля за исполнением скрипта
Реализация контроля за исполнением скрипта

ScriptComplete в данном случае boolean-флаг отвечающий за работу скрипта, а Wait - процедура ожидания. Тоже, к слову сказать самописная, на основе application.ProcessMessages.

Таким образом, алгоритм активации камеры для Dahua сводится к...

Код процедуры активации камеры
Код процедуры активации камеры

Поясню, что ClickButtonOnDIV позволяет нам генерировать код для нажатия типа-кнопки в нужном слое, т.к. все окна диалога реализованы как div и отображаются не в том порядке, в каком пронумерованы.

Грамотный человек сразу обратит внимание на использование keybd_event. Да, это коряво, и следовало заполнение полей делать через скрипт и innerhtml. Но... Реализовать, как всегда, нужно срочно и на коленке. Реализую в дальнейшем, когда пойдет эксплуатация данного софта и, надеюсь, я буду его поддерживать.