Я хочу передать капчу на веб-сайте https://sirus.one/#play и мне нужно установить значение решенной капчи в textarea.g-recaptcha-response -> div.innerText. TextArea имеет ShadowRoot, где веб-сайт сохраняет ответ рекапчи.
Я попытался получить доступ к ShadowRoot следующим образом:
document.querySelector("textarea.g-recaptcha-response").shadowRoot
, но результат нулевой.
Если я распечатаю элемент в консоли, окажется, что ShadowRoot существует.
Как получить теневой рут?
Вы уверены, что ShadowRoot был атакован с установленным режимом открытия? В противном случае он не будет доступен
Поскольку вы пытаетесь разгадать капчу, я думаю, что разумно предположить, что теневой корень не был прикреплен с помощью опции mode: open
. Таким образом, вы не сможете получить к нему доступ, используя свойствоshadowRoot.
const div = document.querySelector('div');
const p = document.querySelector('p');
p.attachShadow({mode: 'open'});
div.attachShadow({mode: 'closed'});
console.info('Paragraph has accessible Shadow DOM:', !!p.shadowRoot); // true
console.info('Div has accessible Shadow DOM:', !!div.shadowRoot); // false
<p></p>
<div></div>
Это была моя ошибка. Я не могу получить доступ к ShadowRoot, созданному браузером. Решение состоит в том, чтобы просто изменить значение textarea: document.querySelector("#g-recaptcha-response").value = "123"
вы пробовали проверить документацию? Developer.mozilla.org/en-US/docs/Web/API/ShadowRoot