Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 14.11.2021, 01:20
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Не могу заполнить поле
Собственно никак не могу заполнить поле помогите пожалуйста
<div data-uia="pass-field+container" class="nfInput nfpassInput login-input login-input-pass"><div class="nfInputPlacement"><div class="nfpassControls"><label class="input_id"><input type="pass" data-uia="pass-field" name="pass" class="nfTextField hasText" id="id_pass" value="" tabindex="0" autocomplete="pass" dir="ltr"><label for="id_pass" class="placeLabel">pass</label></label><button data-uia="pass-visibility-toggle" id="id_pass_toggle" type="button" class="nfpassToggle" title="Show pass">SHOW</button></div></div></div>

document.querySelector("#id_pass").value="123456"
$("#id_pass").value="123456"
заполняют только по виду на деле нет ((((

Последний раз редактировалось noveek, 14.11.2021 в 01:26.
Ответить с цитированием
  #2 (permalink)  
Старый 14.11.2021, 01:27
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

https://javascript.ru/forum/misc/829...tml#post539563
__________________
29375, 35
Ответить с цитированием
  #3 (permalink)  
Старый 14.11.2021, 10:23
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от Aetae Посмотреть сообщение
https://javascript.ru/forum/misc/829...tml#post539563
Да я знаю пробовал это не сработало почему то
Ответить с цитированием
  #4 (permalink)  
Старый 14.11.2021, 13:15
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Значит гадать бессмысленно, нужно разбираться как работает конкретный код.
Ну или использовать инструменты автоматизации извне браузера, полностью имитирующие пользовательский ввод.
__________________
29375, 35
Ответить с цитированием
  #5 (permalink)  
Старый 14.11.2021, 13:57
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от Aetae Посмотреть сообщение
Значит гадать бессмысленно, нужно разбираться как работает конкретный код.
Ну или использовать инструменты автоматизации извне браузера, полностью имитирующие пользовательский ввод.
Вот здесь это:
https://www

Email запоняется нормально а вот с паролем беда и кликается нормально тоже

Последний раз редактировалось noveek, 14.11.2021 в 22:44.
Ответить с цитированием
  #6 (permalink)  
Старый 14.11.2021, 20:04
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Там стоит проверка на isTrusted(параметр true только в событиях генерируемых самим браузером). Изнутри обычного браузера ты не сможешь сделать ничего.

Ну т.е. ты можешь подменить сам кусок кода с проверкой на свой, и пошли они нахрен, но это гораздо сложнее.)
__________________
29375, 35

Последний раз редактировалось Aetae, 14.11.2021 в 20:12.
Ответить с цитированием
  #7 (permalink)  
Старый 14.11.2021, 21:05
Аватар для Aetae
Тлен
Отправить личное сообщение для Aetae Посмотреть профиль Найти все сообщения от Aetae
 
Регистрация: 02.01.2010
Сообщений: 6,565

Вот так должно работать:
function findLodashAndReplaceGet(registry) {
  for(const key in registry) {
    const module = registry[key]?.exports
    if(module && module._ && module._.VERSION === module.VERSION) {
      module.get = ((g) => (...args) => {
        if(args[1] === 'nativeEvent.isTrusted')
          return true

        return g(...args);
      })(module.get);
    }
  }
}

findLodashAndReplaceGet(C._registry);

function setValue(element, value, options) {
  if(typeof element === 'string') 
    element = document.querySelector(element);

  options = Object.assign({
    bubbles: true
  }, options);

  element.dispatchEvent(new Event('focus', options));
  element.dispatchEvent(new Event('keydown', options));
  element.dispatchEvent(new Event('keypress', options));
  
  element.value = value;
  
  element.dispatchEvent(new Event('input', options));
  element.dispatchEvent(new Event('keyup', options));
  element.dispatchEvent(new Event('change', options));
  element.dispatchEvent(new Event('blur', options));

  return element;
}


setValue('#id_password', 'New Value')

Функция findLodashAndReplaceGet должна выполняться один раз(но не критично). Она подменяет get в lodash таким образом что получение isTrusted всегда выдаёт true.
Спасибо им за то что потроха своего кода раскрывают в голобал, иначе было бы чутка по-сложнее.)
__________________
29375, 35

Последний раз редактировалось Aetae, 14.11.2021 в 21:14.
Ответить с цитированием
  #8 (permalink)  
Старый 14.11.2021, 22:44
Аспирант
Отправить личное сообщение для noveek Посмотреть профиль Найти все сообщения от noveek
 
Регистрация: 09.06.2017
Сообщений: 40

Сообщение от Aetae Посмотреть сообщение
Вот так должно работать:
function findLodashAndReplaceGet(registry) {
  for(const key in registry) {
    const module = registry[key]?.exports
    if(module && module._ && module._.VERSION === module.VERSION) {
      module.get = ((g) => (...args) => {
        if(args[1] === 'nativeEvent.isTrusted')
          return true

        return g(...args);
      })(module.get);
    }
  }
}

findLodashAndReplaceGet(C._registry);

function setValue(element, value, options) {
  if(typeof element === 'string') 
    element = document.querySelector(element);

  options = Object.assign({
    bubbles: true
  }, options);

  element.dispatchEvent(new Event('focus', options));
  element.dispatchEvent(new Event('keydown', options));
  element.dispatchEvent(new Event('keypress', options));
  
  element.value = value;
  
  element.dispatchEvent(new Event('input', options));
  element.dispatchEvent(new Event('keyup', options));
  element.dispatchEvent(new Event('change', options));
  element.dispatchEvent(new Event('blur', options));

  return element;
}


setValue('#id_password', 'New Value')

Функция findLodashAndReplaceGet должна выполняться один раз(но не критично). Она подменяет get в lodash таким образом что получение isTrusted всегда выдаёт true.
Спасибо им за то что потроха своего кода раскрывают в голобал, иначе было бы чутка по-сложнее.)
Спасибо тебе добрый человек большой удачи тебе )
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
спрятать/показать поле ввода при нажатии на checkbox g1r Элементы интерфейса 34 16.12.2017 00:34
Активировать текстовое поле если стоит галочка (запара с именами) Гробовщик Events/DOM/Window 9 14.06.2013 10:39
Получить координаты курсора в текстовом поле в пикселях prike Events/DOM/Window 4 23.05.2013 04:35
автоввод даты в поле при изменении другого поля js_nub Общие вопросы Javascript 2 25.03.2013 01:49
открыть модальное окно pisikaka Общие вопросы Javascript 28 20.08.2009 03:53