sunbeam_2001
Новичок
- Сообщения
- 11
- Репутация
- 1
Автоматизирую загрузку товаров в интернет-магазин через веб-интерфейс. На AutoIt GUI, в который встроен IE.
При заполнении карточки товара есть поле "описание", поддерживающее форматирование, которое работает в двух режимах: визуального форматирования текста и ввода HTML. С переключением на режим ввода HTML как раз проблемы.
Режим переключается нажатием на кнопку "Источник":
При наведении мышки кнопка становится голубой, при нажатии -- синей.
Вот что вытащил с помощью FireFox:
То есть сама кнопка Представлена тэгом <a>, в который вложены два <span>: для иконки и второй для надписи.
Все объекты удаётся поймать, но вот на посыл клика они не реагируют.
Код такой:
Пробовал разные варианты, пробовал ловить и span'ы -- всё ловится нормально. Отладочный MsgBox выдаёт html "пойманного" объекта, но вот на _IEAction($oInput,'click') они все плевать хотели. Не происходит ровным счётом ничего.
При этом iMacros для FireFox (если кто пользовался) отлавливает эту штуку очень легко:
и при запуске макроса прекрасно щёлкает на кнопку с достижением желаемого результата.
Кто может помочь?
Задача: щёлкнуть как-нибудь на эту кнопку, чтобы таки переключить режим редактора.
Вопросы:
1) Может, не с помощью _IEAction? Тогда как?
2) По идее в результате клика должен выполниться код CSS "CKEDITOR.tools.callFunction(5, this);", может кто подскажет, как принудительно AutoIt'ом его вызвать без кнопки?
3) Какие ещё мысли, что можно сделать?
Заранее спасибо!
Добавлено:
P.S. Если делаю паузу в скрипте, чтобы навести мышку на кнопку, а потом скриптом выполняю MouseClick("LEFT"), то всё срабатывает.
Чем отличается MouseClick от _IEAction($...,'click')?
Добавлено:
Спасибо всем за участие! Ларчик открывался просто, но не очевидно.
Помог поиск по заграницам: http://www.autoitscript.com/forum/topic/117510-ieaction-click-doesnt-fire-off-javascript-mousedown/
Соль в последовательности событий. Сработало в связке:
При заполнении карточки товара есть поле "описание", поддерживающее форматирование, которое работает в двух режимах: визуального форматирования текста и ввода HTML. С переключением на режим ввода HTML как раз проблемы.
Режим переключается нажатием на кнопку "Источник":
При наведении мышки кнопка становится голубой, при нажатии -- синей.
Вот что вытащил с помощью FireFox:
Код:
<a aria-pressed="true" id="cke_9" class="cke_button_source cke_on" title="Источник" tabindex="-1" hidefocus="true" role="button" aria-labelledby="cke_9_label" onblur="this.style.cssText = this.style.cssText;" onkeydown="return CKEDITOR.tools.callFunction(3, event);" onfocus="return CKEDITOR.tools.callFunction(4, event);" onclick="CKEDITOR.tools.callFunction(5, this); return false;">
<span class="cke_icon"> </span>
<span style="border-color: rgb(0, 0, 255); border-width: 2px; border-style: solid;" id="cke_9_label" class="cke_label">Источник</span>
</a>
То есть сама кнопка Представлена тэгом <a>, в который вложены два <span>: для иконки и второй для надписи.
Все объекты удаётся поймать, но вот на посыл клика они не реагируют.
Код такой:
Код:
$oInputs = _IETagNameGetCollection ($rotator, "a")
For $oInput In $oInputs
If StringInStr(_IEPropertyGet($oInput, "outerhtml"), "cke_9_label") Then
_IEAction($oInput,'click')
MsgBox(4096, "Object html", _IEPropertyGet($oInput, "outerhtml"))
EndIf
Next
Пробовал разные варианты, пробовал ловить и span'ы -- всё ловится нормально. Отладочный MsgBox выдаёт html "пойманного" объекта, но вот на _IEAction($oInput,'click') они все плевать хотели. Не происходит ровным счётом ничего.
При этом iMacros для FireFox (если кто пользовался) отлавливает эту штуку очень легко:
Код:
TAG POS=1 TYPE=SPAN ATTR=ID:cke_9_label
и при запуске макроса прекрасно щёлкает на кнопку с достижением желаемого результата.
Кто может помочь?
Задача: щёлкнуть как-нибудь на эту кнопку, чтобы таки переключить режим редактора.
Вопросы:
1) Может, не с помощью _IEAction? Тогда как?
2) По идее в результате клика должен выполниться код CSS "CKEDITOR.tools.callFunction(5, this);", может кто подскажет, как принудительно AutoIt'ом его вызвать без кнопки?
3) Какие ещё мысли, что можно сделать?
Заранее спасибо!
Добавлено:
Сообщение автоматически объединено:
P.S. Если делаю паузу в скрипте, чтобы навести мышку на кнопку, а потом скриптом выполняю MouseClick("LEFT"), то всё срабатывает.
Чем отличается MouseClick от _IEAction($...,'click')?
Добавлено:
Сообщение автоматически объединено:
Спасибо всем за участие! Ларчик открывался просто, но не очевидно.
Помог поиск по заграницам: http://www.autoitscript.com/forum/topic/117510-ieaction-click-doesnt-fire-off-javascript-mousedown/
Соль в последовательности событий. Сработало в связке:
Код:
$oLink1.fireEvent("onmousedown")
$oLink1.fireEvent("onmouseup")
_IEAction($oLink1,'click')