Не могу заполнить поле
Собственно никак не могу заполнить поле помогите пожалуйста
<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, время: 06:28. |