我想在网站 https://sirus.one/#play 上传递验证码,并且我需要在 textarea.g-recaptcha-response -> div.innerText 中设置已解决的验证码值。 TextArea有shadowRoot,网站保存recaptcha的响应。
我尝试像这样访问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.log('Paragraph has accessible Shadow DOM:', !!p.shadowRoot); // true
console.log('Div has accessible Shadow DOM:', !!div.shadowRoot); // false
<p></p>
<div></div>
这是我的错误。我无法访问浏览器创建的shadowRoot。解决办法就是改变textarea的值:
document.querySelector("#g-recaptcha-response").value = "123"