Вопрос:
Я хочу написать некоторую автоматизацию на веб-сайт. Просто заполнение форм и имитация кликов по элементам. Но для некоторых элементов функция JavaScript click() не работает. Например, на этой странице: http://www1.plus.pl/bsm/ Если я нажимаю() на кнопку “Wyślij”, ничего не происходит. Это моя команда:
document.getElementsByClassName(‘tab-button’)[0].click()
Что не так? Почему на других элементах эта функция работает?
Лучший ответ:
С вашей помощью я нашел решение:
var evt = document.createEvent(‘MouseEvents’) evt.initMouseEvent(‘mousedown’, true, false, window, 0, 0, 0, 0, 0, false, false, false, false, 0, null); document.querySelectorAll(‘.tab-button’)[0].dispatchEvent(evt)
Обратите внимание, что это событие должно быть mousedown а не click. Некоторые сайты работают иначе, чем другие. Еще одна важная вещь – третий параметр. Он должен быть установлен в false (в данном конкретном случае). Он устанавливает cancelable значение. Без этого параметра в false это не сработает.
Спасибо за все ответы!
Ответ №1document.getElementsByClassName(‘tab-button’)[0].dispatchEvent(event)
или
document.getElementsByClassName(‘tab-button’)[0].fireEvent(event)
это то, как вы могли это сделать… но, пробуя его на сайте, событие “click” не привязано к этому элементу
EDITED См. Как инициировать событие в JavaScript?
Ответ №2
Я подозреваю, что это потому, что браузер, на котором вы тестируете, не имеет встроенной поддержки .getElementsByClassName. Попробуйте вместо этого использовать document.querySelectorAll или назначьте свой элемент идентификатору и используйте document.getElementById. Например:
var btn = document.querySelectorAll(«tab-button»)[0]; btn.click(); Ответ №3
вы делаете это после Loaded на теге body, если некоторые элементы не нажимают, это может быть связано с тем, что они не загружаются в DOM при запуске скрипта.