Не могу заполнить поле
Собственно никак не могу заполнить поле помогите пожалуйста
<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" заполняют только по виду на деле нет (((( |
|
Цитата:
|
Значит гадать бессмысленно, нужно разбираться как работает конкретный код.
Ну или использовать инструменты автоматизации извне браузера, полностью имитирующие пользовательский ввод. |
Цитата:
https://www Email запоняется нормально а вот с паролем беда и кликается нормально тоже |
Там стоит проверка на isTrusted(параметр true только в событиях генерируемых самим браузером). Изнутри обычного браузера ты не сможешь сделать ничего.
Ну т.е. ты можешь подменить сам кусок кода с проверкой на свой, и пошли они нахрен, но это гораздо сложнее.) |
Вот так должно работать:
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. Спасибо им за то что потроха своего кода раскрывают в голобал, иначе было бы чутка по-сложнее.) |
Цитата:
|
Часовой пояс GMT +3, время: 21:38. |