@zkrvndm
Софт для автоматизации

Как имитировать ввод сообщения в WhatsApp Web?

Просто ввести сообщение и отправить его пользователю не проблема:
document.querySelector('div#main div[contenteditable="true"]').innerHTML = 'Проверка...';
document.querySelector('div#main div[contenteditable="true"]').dispatchEvent(new Event('input', { bubbles: true }));
document.querySelector('span[data-icon="send"]').click();

Однако, как заставить сработать событие ввода? Чтобы собеседник видел надпись печатает...?

5f6490bb583d6403635817.png
  • Вопрос задан
  • 397 просмотров
Решения вопроса 2
miraage
@miraage
Старый прогер
Задержки добавить между нажатиями клавиш. Сейчас это выглядит, будто моментально нажимается.
Средний words per minute = 40, это где-то 200 символов. 60 / 200 = 0.3 секунды на кнопку.
Пробуйте 0.2-0.3 секунды задержку между событиями. Так же, должно список событий на нажатие клавиши должен быть таким:
- keydown
- keypress
- input
- keyup
Ответ написан
@zkrvndm Автор вопроса
Софт для автоматизации
Написал функцию для эмуляции ввода сообщения в WhatsApp Web:
// Вызываем функцию для набора текста и отправки:

textEnter('Проверка события ввода сообщения в мессенджере WhatsApp. Смотрим, отсылается ли информация о том, что собеседник в данный момент печатает сообщение.');

// Функция для имитации ввода сообщения и его отправки:

function textEnter(text) {
	
	var array = text.split(''); // Разбиваем текст по символам в массив
	
	// Ищем поле вввода сообщения и записываем ссылку на него в переменную:
	
	var div = document.querySelector('div#main div[contenteditable="true"]');
	
	div.focus(); // Передаём фокус на поле ввода
	
	// Запускаем эмулятор посимвольного ввода:
	
	var emulator = setInterval(function() {
		
		// Пока есть символы в сообщени:
		
		if (array.length > 0) {
			
			// Вводим символ:
			var symbol = array.shift();
			div.innerHTML = div.innerHTML + symbol;
			
			// Передаём клавиатурные события отвечающие за ввод:
			div.dispatchEvent(new KeyboardEvent('keydown', { bubbles: true }));
			div.dispatchEvent(new KeyboardEvent('keypress', { bubbles: true }));
			div.dispatchEvent(new KeyboardEvent('keyup', { bubbles: true }));
			div.dispatchEvent(new InputEvent('input', { bubbles: true }));
			
		}
		
		// Если все символы введены:
		
		else {
			
			clearInterval(emulator); // Отключаем эмулятор ввода
			
			// Ищем и жмем кнопку отправки сообщения собеседнику:
			document.querySelector('span[data-icon="send"]').click();
			
		}
		
	}, 100);

}

Наверняка многим пригодится. Спасибо Mikhail Osher за наводку на правильный алгоритм действий)
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы