Я был бы склонен спросить об этом у пользователей mootools, я бы догадался, что это каким-то образом перехватывает событие, поэтому элемент браузера никогда не «видит» его при запуске, но это всего лишь предположение.
Их инструменты могут также добавлять какую-то другую логику CSS или что-то еще, что определяет, является ли этот элемент скрытым или видимым, я часто видел это с правилами, которые используют комбинацию типа элемента и класса вместе с ним.с: hover psuedoclass для реализации меню
Для элементов управления, которые используют исключительно CSS для управления видимостью элемента, я пока не смог найти способ (пока) вызвать состояние «зависания», которое распознается вуровень браузера, чтобы правила CSS: hover вступали в силу и вызывали появление элементов меню.
Решение может заключаться в том, чтобы принудительно изменить видимость элемента, по существу выполняя тот же код сценария, которыйзапустить через onmouseover и посмотреть, заставит ли этот элемент отображаться.
browser.execute_script("document.getElementById('id6').style.display='block';")
Если это не сработает, вы можете быть в состоянии манипулировать вещами на уровне CSS, временно изменяя конкретный элемент управления стилем.Я сделал это с помощью Jquery (поскольку наше приложение уже использует его), используя этот общий формат
browser.execute_script("jQuery('CSS-Rule-Name').css({display: 'block'});")
В моем конкретном случае код для раскрытия всех раскрывающихся меню в конечном итоге выглядит следующим образом
browser.execute_script("jQuery('.navigation #secondary_nav > li ul.tertiary_nav').css({display: 'block'});")
Это, конечно, должно быть адаптировано к вашему коду, так как правило CSS, скорее всего, будет другим.Я нашел это правило, используя инструменты разработчика, выбрав элемент контейнера для меню в dom, затем выбрал «trace styles» и раскрыл свойство «display», которое должно дать вам конкретное правило CSS (в моем случае этоis .navigation #secondary_nav > li ul.tertiary_nav
), который управляет отображением (обычно «none» или «block») элемента.(будут добавлены другие аналогичные правила с добавлением :hover
, которые вступят в силу, когда браузер определит, что мышь наводит курсор на соответствующий элемент)
Это немного клочья, но он делает то, что нужно,что делает пункт меню видимым, чтобы вы могли затем использовать такие вещи, как .click
метод.
Если это действие не вызывает обновления страницы, вы можете снова скрыть меню, используя тот же сценарий, но установив для него значение «none» вместо «block»