![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 17
|
![]()
Доброго времени суток уважаемые форумчане.
Я работаю в организации, в которой очень много сотрудников, а столовая одна на всех. Очередь в столовую формируется электронно: в определенное время (в 9:00:00) на веб-странице (доступной только через внутреннюю сеть) в определенном месте появляется кнопка "Записать в очередь" (кнопка появляется без перезагрузки страницы). Пользователи со всех подразделений начинают нажимать эту кнопку (как правило начинают нажимать на место, где должна появиться кнопка, за пару секунд до ее появления, и жмут много раз с максимальной частотой). В течение около 10-30 секунд после наступления 9:00:00 на веб странице крутится значок "ожидание" (который обычно появляется, когда в браузере нажал на ссылку, но страница еще не загрузилась). После загрузки страницы все видят очередность похода подразделений на обед. Я не знаю почему, но нашему подразделению редко когда получается записаться раньше 3-го десятка, поэтому к приходу в столовую еды уже мало, она остывшая, да и ко времени похода в столовую уже ни о чем, кроме как о еде, не думается ... Хотелось бы попробовать исключить человеческий фактор при нажатии на кнопку записи. Из доступных на моем рабочем месте инструментов, которые могут автоматизировать процесс записи - только Excel с VB. Как я представляю, можно в процедуре VB написать программу по следующему алгоритму: ___________________________ 1. активировать браузер 2. перевести курсор мыши на место, где появляется кнопка записи в очередь 3. эмулировать нажатие левой клавиши мыши на текущем положении курсора с периодичностью, например, 10 миллисекунд в течение 10 секунд. ___________________________ Как пройти первый шаг - понятно (AppActivate "Очередь в столовую"), а вот как реализовать шаги 2 и 3 - не смог найти. Прошу вашей помощи. |
![]() |
![]() |
![]() |
#2 |
Форумчанин
Регистрация: 22.06.2011
Сообщений: 325
|
![]()
Приветствую!
Зачем переводить курсор у кнопки есть событие Click Вот его и нужно обработать Вот пример захода на mail.ru Код:
Заказать макрос можно на сайте http://excel4you.ru/
|
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 17
|
![]()
Watcher_1, спасибо за оперативный ответ.
В коде страницы код для кнопки такой: <button id="Record" type="submit" title="Записать в очередь" ...>Записать</button> Значит, мне вместо ie.document.getelementbyID("mailbox __auth__button").Click из вашего примера нужно написать ie.document.getelementbyID("Record" ).Click? |
![]() |
![]() |
![]() |
#4 |
Форумчанин
Регистрация: 22.06.2011
Сообщений: 325
|
![]()
Получается так...
Заказать макрос можно на сайте http://excel4you.ru/
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 17
|
![]()
Проверить работу макроса пока не могу, т.к. запись открыта в течение часа (с 9:00:00 до 10:00:00), после чего кнопка записи скрывается с экрана.
После проверки отпишусь. |
![]() |
![]() |
![]() |
#6 |
Форумчанин
Регистрация: 26.04.2010
Сообщений: 450
|
![]()
als999, чтобы проверить, Вам необходимо знать ID (или что-то еще) нужных Вам элементов.
Watcher_1, как я себе это представляю: 1. создаем объект IE 2. заходим на нужную страницу 3. используя таймер браузера [setInterval], проверяем появился ли нужный нам элемент через n миллисекунд. 4. как только его обнаружили, кликаем
Тишина – самый громкий звук
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 17
|
![]()
nerv, в приведенном мною выше примере кода страницы, ID кнопки, как я понимаю, Record?
Шаги алгоритма 1, 2 - теже что и в коде Watcher_1, а вот 3-4 как реализовать? |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 17
|
![]()
Watcher_1, код в целом работает, но в таком виде задачу не решает. Причина - в момент загрузки IE перед 09:00:00 сервер висит и страница не успевает загрузиться. Т.е. нужно чтобы IE загружался заранее, а программно нужно только нажать кнопку.
Вопрос в том, как после активации IE (кодом AppActivate "Очередь в столовую") обратиться к элементу с id Record? |
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 22.06.2011
Сообщений: 325
|
![]()
Пробуем такой вариант НО Internet Explorer должен быть запущен и страница загружена
Код:
Заказать макрос можно на сайте http://excel4you.ru/
|
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 15.11.2010
Сообщений: 17
|
![]()
вариант рабочий, только вместо
Код:
Код:
![]() Я кнопку нажимаю в цикле, и видимо он бежит слишком часто, что кнопка не успевает отобразиться. Нужно либо ставить задержку между нажатиями (например, таймером, или вторым внутренним циклом), либо дожидаться наступления 09.00:00 и тогда начинать нажимать. Думаю, второй вариант более надежен. А как сделать, чтобы часть кода, в которой нажимается кнопка, запускалась ровно в 09:00:00? |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
эмуляция нажатия клавиши F | Vitek_DeadlyHunter | Общие вопросы Delphi | 3 | 03.11.2011 12:44 |
Как имитировать клик мыши в определенном месте в браузере | iukash | Qt и кроссплатформенное программирование С/С++ | 5 | 17.02.2011 15:28 |
Эмуляция нажатия клавиши | helenfly | Win Api | 9 | 01.12.2009 12:09 |
Эмуляция нажатия клавиши...... | Zoidberg | Win Api | 4 | 11.01.2007 18:44 |