fixin (fixin) wrote,
fixin
fixin

Category:

Нашел исполнителя для управления FireFox



Нашел исполнителя для плагина по программному управлению браузером Fire Fox. Я предлагал 2000, договорились за 3000.


Если получится, то наконец-то соскочу с единственного программно управляемого браузера - IE. Тогда у меня будет единственный в мире программно управляемый браузер FireFox.


Правда, зарабатывать на таких вещах я не умею, поэтому поделюсь с All. На Dotation Ware я и не надеюсь, до этого надо морально созреть.


ТЗ под катом.



ТЗ по задаче «Плагин для FireFox для управления браузером»


Требуется разработать плагин для управления браузером FireFox.


Краткое описание


После запуска плагин постоянно контролирует наличие командных файлов в заданном каталоге и может выполнять команды:


1. Открыть новый таб и перейти по заданному адресу, не фокусируя новый таб, вернуть идентификатор таба в качестве ответа после загрузки страницы.


2. Получить текст страницы (не исходный код, а текущий отображаемый текст, т.е. после загрузки и выполнения джава-скриптов).


3. Выполнить переданную команду на Java-Script, например команду заполнения текста и нажатия кнопки (js-файл) в контексте переданного по идентификатору таба.


Подробное описание


В настройках плагина указывается каталог обмена информацией с управляющей программой (УП).


Плагин работает в отдельном окне браузера. В этом окне он может открывать новые закладки.  Если этого окна нет, оно создается и помечается, что это окно для плагина, т.е. в чужие окна плагин не залазит. Для каждой открытой закладки он присваивает некий GUID, чтобы можно было сослаться на конкретную закладку.


В каталоге обмена помещаются XML- запросы к браузеру в файлах вида requestGUID.xml. Здесь GUID – уникальный идентификатор запроса. Запросы выполняются последовательно (если есть возможность  и не сложно, лучше параллельно). XML-ответы на запросы помещаются в файлы вида answerGUID.xml. GUID файлов запроса и ответа совпадают. При начале обработки запроса файл запроса удаляется.


Кодировка файлов ответа и запроса UTF-8.


Корневой элемент XML называется data.


XML файл должен быть корректным XML файлом.


В описании структуры xml файлов все поля приводятся с учетом регистра букв, все буквы латинские. Все GUID передаются без дефисов в виде 16 знаков.


В файле запроса обычно имеются поля:



  • timeout – таймаут выполнения запроса в секундах. Если ноль, то время не ограничено, иначе запрос должен выполняться не более заданного времени.
  • commandимя команды
  • page – GUID страницы.
  • startвремя начала запроса
  • wait если задан, то ждать загрузки страницы в пределах timeout  (true/false)

В файле ответа обычно имеются поля:



  • page – GUID страницы
  • ok – true или false в зависимости от результата операции.

 


Команды


Параметры команды задаются на общем уровне с полями запроса.


Пример XML-файла запроса с командой navigate (экранирование спецсимволов не используется для простоты восприятия):


<?xml version="1.0" encoding="UTF-8"?>
<data>


  <command>navigate</command>


  <page>fffe8899ffac78ff</page>


  <url>http://forum.ru/viewtopic.php?id=12345</url>


  <wait>true</wait>


</data>


Navigate


navigate - переход на заданный адрес.


urlадрес перехода.


Если page не задан, то в новой закладке.


В поле html возвращается HTML страницы.


В поле page возвращается GUID новой закладки.


Stop


stopостановка загрузки страницы.


page должен быть задан.


Status


status проверка статуса закладки.


page должен быть задан.


В поле readystate возвращается статус загрузки страницы.


В поле html возвращается HTML страницы.


В поле open возвращается открыта ли страница (true/false).


Refresh


refreshобновить закладку.


page должен быть задан.


Сlose


closeзакрыть закладку.


page должен быть задан.


Run


runвыполнить некоторый java-script код в объектной модели DOM на указанной странице.


page должен быть задан.


codeтекст кода на java-script.


В java-script должен быть доступен некоторый объект, например documentelem, который ссылается на DOM документа.


wait если задан, то ждать выполнения кода (true/false). Если задан в true, то ответ получается после выполнения кода в пределах timeout.


SaveImage


saveimage сохранение изображения.


urlпуть к картинке


filenameв какой файл сохранять


Картинка должна быть на странице, идентифицируется по пути к картинке, совпадающему с переданным url.


При возникновении объективных сложностей с выполнением этой команды ее можно исключить из ТЗ.


Особенности


Если возвращается поле page, то требуется также возвращать и поле dialog, в котором возвращается непустая строка, если открыто окно вопроса/предупреждения, в этом случае возвращается текст вопроса /предупреждения. Появление вопроса/предупреждение следует считать окончанием загрузки страницы. Т.е. плагин должен обрабатывать возникновение таких ситуаций, IE в этом случае находится в readystate = 3. Также плагин должен закрывать страницы по команде close с такими открытыми диалоговыми окнами.


ТЗ рассчитано на то, что можно передавать JS-код через плагин браузеру. Если это не поддерживается плагином, нужно искать другие возможности управления страницей.


Выполнение перемещения по страницам не должно мешать работе пользователя на компьютере. Окно браузера не должно получать фокус ввода при перемещении по страницам.


Если прошел отбой команды по тайм-ауту, то нужно возвращать все равно недозагруженный текст страницы html для анализа причин таймаута.


Сканировать каталог нужно так часто, чтобы это не сказывалось на производительности компьютера. Можно частоту сканирования вынести в параметр плагина. Для оптимизации можно удалять старые запросы и каталог запросов и ответов разнести по разным подкаталогам.


Требования к разработке


Должны быть переданы исходники, чтобы можно было .


Гарантирую указание авторства разработки при публикациях разработки в интернете.


Разработка используется в личных, а не коммерческих целях, по крайней мере в ближайшую пятилетку.


Требования к сдаче


Желательно разделить разработку на два этапа.


На первом убедиться, что реализация возможна, реализовать черновой вариант (60% оплаты).


На втором поправить ошибки, которые будут замечены в процессе эксплуатации (40% оплаты).


 

Tags: Наём программистов
Subscribe
promo fixin december 31, 2037 16:57 1416
Buy for 30 tokens
UPD: Друзья, в августе 2019 года блог переехал на http://fixinchik.ru. Welcome! Добро пожаловать в журнал Осипова Сергея Александровича, известного также как Fixin и Гений 1С. Рекомендую ознакомиться с Часто Задаваемыми Вопросами обо мне. Что я хочу в подарок - список. Мой проект "…
  • Post a new comment

    Error

    default userpic

    Your reply will be screened

    Your IP address will be recorded 

    When you submit the form an invisible reCAPTCHA check will be performed.
    You must follow the Privacy Policy and Google Terms of use.
  • 24 comments