Автоматизация работы в браузере
От: greydrone Россия  
Дата: 20.10.14 07:03
Оценка: :)
Добрый день. Занимаюсь небольшими работами по автоматизации задач в организации. На vba написан макрос, который осуществляет поиск лиц в бд. Попросили сделать кнопку "переход в пенсионное дело". Сама работа у бухов осуществляется через веб-приложение. Все параметры передаются методом POST, поэтому определился для себя, что нужно эмулировать работу через функцию WINAPI SendInput (на vba это SendKeys). Я представляю себе процесс так — выполняется некоторое действие, напримет клик мыши на поле ввода, небольшая задержка, ввод данных(либо вставка из буфера), нажание enter, далее ожидание ответа от сервера и снова уже другой набор действие. Ожидание ответа от сервета я решил основывать на анализе изображения окна(читаю цвет точки через GetPixel). Но что-то постоянно не ладится, хотя промежутки после ввода уже беру по 500мс и задержку в цикле анализа изображения окна 1000мс, но все равно наблюдаются баги :
1. Бывает в поле имя пользователя вводится и пароль тоже, либо имя пользователя пропускается и вводится только пароль.
2. Internet Explorer может просто зависнуть и перестать отрисовывать изображение, причем он продолжается нормально работать после закрытия excel через диспетчер задач.

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

P.S. Пишу в форум по С++, потому что обычно пишу на нем.
Re: Автоматизация работы в браузере
От: jahr  
Дата: 20.10.14 08:02
Оценка: +1
Здравствуйте, greydrone,

Можно использовать какой-нибудь готовый движок типа Selenium. Вот, например: http://www.makeuseof.com/tag/how-to-automate-firefox-or-chrome-with-vba-and-selenium/
Там, кстати, есть и ссылка на отдельную статью по автоматизации IE, но мне кажется, правильнее все сделать через Selenium, в нем webdriver для IE тоже вроде как есть.)
Отредактировано 20.10.2014 8:06 jahr . Предыдущая версия .
Re[2]: Автоматизация работы в браузере
От: greydrone Россия  
Дата: 21.10.14 02:19
Оценка:
J>Там, кстати, есть и ссылка на отдельную статью по автоматизации IE, но мне кажется
Здорово, то что нужно.
Re: Автоматизация работы в браузере
От: vpchelko  
Дата: 21.10.14 20:55
Оценка: 2 (1) +2
Здравствуйте, greydrone, Вы писали:

  Скрытый текст
G>Добрый день. Занимаюсь небольшими работами по автоматизации задач в организации. На vba написан макрос, который осуществляет поиск лиц в бд. Попросили сделать кнопку "переход в пенсионное дело". Сама работа у бухов осуществляется через веб-приложение. Все параметры передаются методом POST, поэтому определился для себя, что нужно эмулировать работу через функцию WINAPI SendInput (на vba это SendKeys). Я представляю себе процесс так — выполняется некоторое действие, напримет клик мыши на поле ввода, небольшая задержка, ввод данных(либо вставка из буфера), нажание enter, далее ожидание ответа от сервера и снова уже другой набор действие. Ожидание ответа от сервета я решил основывать на анализе изображения окна(читаю цвет точки через GetPixel). Но что-то постоянно не ладится, хотя промежутки после ввода уже беру по 500мс и задержку в цикле анализа изображения окна 1000мс, но все равно наблюдаются баги :
G>1. Бывает в поле имя пользователя вводится и пароль тоже, либо имя пользователя пропускается и вводится только пароль.
G>2. Internet Explorer может просто зависнуть и перестать отрисовывать изображение, причем он продолжается нормально работать после закрытия excel через диспетчер задач.

G>Есть ли какое-то распространенное решение задачи, или я слишком много хочу и лутше вообще за это не браться, сказав, что это сделать невозможно.


G>P.S. Пишу в форум по С++, потому что обычно пишу на нем.


А нафига вот такая "автоматизация"? Если для тяп-ляп тестирования, то можно . А если для пользовательского интерфейса — это же глюкодром/говнокод на веки веков. Можно сказать что можно на коленке налабать за 5 минут — но поддержка такого кода будет стоить over 1000000 — ибо сплошная эвристика, типа задержек (месячных) которые вы описали выше.

Если делать для UI — то по нормальному — добавить новую кнопку в UI — послать соответствующий запрос на сервер и корректно обработать запрос.
Сало Украине, Героям Сала
Отредактировано 21.10.2014 21:00 vpchelko . Предыдущая версия . Еще …
Отредактировано 21.10.2014 20:57 vpchelko . Предыдущая версия .
Re[2]: Автоматизация работы в браузере
От: Mr.Delphist  
Дата: 23.10.14 11:46
Оценка:
Здравствуйте, vpchelko, Вы писали:

V>А нафига вот такая "автоматизация"? Если для тяп-ляп тестирования, то можно . А если для пользовательского интерфейса — это же глюкодром/говнокод на веки веков. Можно сказать что можно на коленке налабать за 5 минут — но поддержка такого кода будет стоить over 1000000 — ибо сплошная эвристика, типа задержек (месячных) которые вы описали выше.

На коленке не надо, конечно — есть готовые тулы, типа того же Selenium, упомянутого выше. Кривизны тут никакой: есть веб-форма, есть код для её авто-заполнения. Поменялась форма — надо менять и код автозаполнения, это неизбежно. Насчёт задержек, кстати, тоже зря ёрничаете — попробуйте "автоматизировать" веб-формы гугла/яндекса/etc — будете сильно удивлены прозорливостью анти-бот механизмов, когда человеку стабильно говорят "200 OK", а скрипту с теми же действиями вываливает пачку "четырёхсотых".

V>Если делать для UI — то по нормальному — добавить новую кнопку в UI — послать соответствующий запрос на сервер и корректно обработать запрос.

В уже готовом веб-приложении? Особенно если сырцов нет и/или фиксов не задеплоить?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.