Javascript-форум (https://javascript.ru/forum/)
-   Events/DOM/Window (https://javascript.ru/forum/events/)
-   -   Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано) (https://javascript.ru/forum/events/23660-kak-uznat-kakojj-skript-vyzyvaetsya-pri-klike-po-ehlenetu-esli-ehto-pryamo-ne-propisano.html)

Dmitriy Komar 01.12.2011 14:07

Как узнать какой скрипт вызывается при клике по эленету (если это прямо не прописано)
 
Добрый день. Занимаюсь автоматизацией тестирования веб-приложения на Selenium WebDriver и столкнулся с такой проблемой: селениум ни в какую не хочет кликать по определенному DIV элементу. Если кликнуть вручную, то все работает отлично и нужное окно открывается.

Вот описание самого элемент:
Код:


<div id="ke5sBLbfvYwogwt-uid-2" class="dhtmlxMenu_dhx_blue_TopLevel_Item_Normal" title="Click to create a Custom Field">
    <div class="top_level_text">Create Field</div>
</div>

У элемента нет описания события onclick, соответственно событие обрабатывается где-то в другом месте. Как можно узнать где оно обрабатывается и какие методы при этом вызываются? Просто посмотреть методы со страницы в firebug не помогает, так как их слишком много и непонятно какой из них вызывается. Может есть сниферы какие-то или что-то типа такого? :) Потому что просто эмуляция клика не срабатывает и нужно будет вызывать напрямую

:help:

Pavel M. 01.12.2011 14:25

попробуйте расширения firebug для работы с событиями, типа http://getfirebug.com/wiki/index.php...sions#Eventbug

Маэстро 08.12.2011 03:30

Цитата:

Сообщение от Dmitriy Komar (Сообщение 140096)
У элемента нет описания события onclick...

Если элемент срабатывает по клику мышью, то это значит, что возможны три варианта:
1. обработчик onclick навешивается где-то дальше по ходу программы. и возможно после загрузки посмотреть его хотя бы так: alert(thisobject.onclick);
2. возможно на элемент навешен не обработчик onclick, а два обработчика onmousedown и onmouseup - надо искть их.
3. бывают случаи (редко), когда обработчик навешен на document и обрабатывает все события от мыши, при этом он проверяет координаты мыши и, если клик произошел над данным DIV_ом, то производит определенные действия, если над другим - производит другие. В этом случае надо проверить все ссылки на id "ke5sBLbfvYwogwt-uid-2"

with-love-from-siberia 08.12.2011 06:18

Цитата:

Сообщение от Маэстро
бывают случаи (редко), когда обработчик навешен на document ..., при этом он проверяет координаты мыши

Необязательно проверять координаты - достаточно проверить свойство события target или srcElement и сопоставить с требуемым элементом. Если элементов неопределенно много, то установка единственного обработчика на document более оптимальная по коду и экономичная по скорости выполнения операция нежели инициализация индивидуального для каждого элемента, удовлетворяющего определенным условиям.

Маэстро 08.12.2011 17:21

Цитата:

Сообщение от with-love-from-siberia (Сообщение 141335)
Необязательно проверять координаты - достаточно проверить свойство события target или srcElement и сопоставить с требуемым элементом.

этого недостаточно в ряде случаев, когда элементы с абсолютным позиционированием и накладываются один на другой. пример: на DIV_е лежит картинка. Клик должен обработать данный DIV. но при клике на картинку какой будет target/srcElement?


Часовой пояс GMT +3, время: 17:33.